ALTER PROCEDURE [dbo].[proc_bandejaPedidos] @id_usuario INT = 0, @selector NVARCHAR(50) = '', @order NVARCHAR(50) = '', @consulta NVARCHAR(MAX) = '' AS BEGIN SET NOCOUNT ON; IF(@selector = '' AND @order = '') SET @selector = 'pedi.fecha_creacion'; SET @order = 'DESC'; SET @consulta = 'pedi.id,pedi.folio,pedi.cliente_id, eniac_clientes.rfc, eniac_clientes.nombre+\" \"+eniac_clientes.apellido_paterno+\" \"+eniac_clientes.apellido_paterno AS Cliente, pedi.fecha_creacion, pedi.importe, estatus_pi.estatus, eniac_sucursales.nombre AS sucursal FROM pedidos AS pedi INNER JOIN gestion_pedidos_eniac.dbo.sucursales AS eniac_sucursales ON eniac_sucursales.id_sucursal = pedi.sucursal_id INNER JOIN gestion_pedidos_eniac.dbo.clientes AS eniac_clientes ON eniac_clientes.id = pedi.cliente_id INNER JOIN estatus_pedido AS estatus_pi ON estatus_pi.id = pedi.estatus WHERE pedi.usuario_id = '+ CAST(@id_usuario AS NVARCHAR)+' ORDER BY ' + @selector + ' '+ @order + '' EXEC sp_executesql @consulta END
L'erreur est:
Syntaxe incorrecte près de ','
et je ne comprends pas que si la requête entière est bien sans erreurs zéro.
Merci beaucoup pour votre aide
essaye ça:
select
''''
au lieu de \" \"
Requête de debugging à l'aide de l'printing de sa sortie
ALTER PROCEDURE [dbo].[proc_bandejaPedidos] @id_usuario INT = 0, @selector NVARCHAR(50) = '', @order NVARCHAR(50) = '', @consulta NVARCHAR(MAX) = '' AS BEGIN SET NOCOUNT ON; IF(@selector = '' AND @order = '') SET @selector = 'pedi.fecha_creacion'; SET @order = 'DESC'; SET @consulta = 'select pedi.id,pedi.folio,pedi.cliente_id, eniac_clientes.rfc, eniac_clientes.nombre+'' ''+eniac_clientes.apellido_paterno+'' ''+eniac_clientes.apellido_paterno AS Cliente, pedi.fecha_creacion, pedi.importe, estatus_pi.estatus, eniac_sucursales.nombre AS sucursal FROM pedidos AS pedi INNER JOIN gestion_pedidos_eniac.dbo.sucursales AS eniac_sucursales ON eniac_sucursales.id_sucursal = pedi.sucursal_id INNER JOIN gestion_pedidos_eniac.dbo.clientes AS eniac_clientes ON eniac_clientes.id = pedi.cliente_id INNER JOIN estatus_pedido AS estatus_pi ON estatus_pi.id = pedi.estatus WHERE pedi.usuario_id = '+ CAST(@id_usuario AS NVARCHAR)+' ORDER BY ' + @selector + ' '+ @order + '' EXEC sp_executesql @consulta print (@consulta) END
SET @consulta = 'pedi.id,pedi.folio,pedi.cliente_id,
devrait être
SET @consulta = 'SELECT pedi.id,pedi.folio,pedi.cliente_id,
Vous avez manqué select
dans votre déclaration.
Il devrait être SET @consulta = 'select pedi.id,pedi.folio,pedi.cliente_id,
et ainsi de suite
Vous avez des problèmes dans votre code.
SELECT
au début de votre code: 'SELECT pedi.id,pedi.folio, ...
BEGIN/END
à la clause IF
, car en ce moment la deuxième ligne s'exécute toujours: ''
au lieu de \"