')'附近的语法不正确

时间:2018-09-03 17:13:56

标签: sql-server tsql stored-procedures

我在存储过程中执行了以下查询,但遇到上述错误。

ALTER PROCEDURE [dbo].[ejemplo] 
    @periodo VARCHAR(2), 
    @ejercicio VARCHAR(20),  
    @sucursales VARCHAR(50), 
    @departamento VARCHAR(2)
AS
    DECLARE @consulta NVARCHAR(MAX);

    SET @consulta = 'select balanza.cuenta, Cuentas.Descripcion, sum(total_mensual) as "Gasto Total" from balanza 
inner join Cuentas on Cuentas.Cuenta = balanza.cuenta where ejercicio = '+@ejercicio+' and periodo in ('+@periodo+') and sucursal in ('+@sucursales+') and departamento in ('+@departamento+') 
group by balanza.cuenta, Cuentas.Descripcion order by balanza.cuenta'

    EXEC (@consulta)

将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

检查变量@periodo, @sucursales and @departamento。您似乎正在尝试将其传递为'IN'语法。打印动态查询时,您会得到

select 
    balanza.cuenta, Cuentas.Descripcion, sum(total_mensual) as "Gasto Total" 
from 
balanza 
inner join Cuentas on 
Cuentas.Cuenta = balanza.cuenta 
where ejercicio = @ejercicio 
    and periodo in (@periodo )  ---Check this variable
    and sucursal in (@sucursales)  ---Check this variable
    and departamento in (@departamento)   ---Check this variable
group by 
balanza.cuenta, 
Cuentas.Descripcion 
order by balanza.cuenta

我认为您可能需要更改逻辑才能将其传递给'IN'子句