销售表:
Product varchar(20),
Month varchar(20),
Value int
这是我正在尝试做的事情:
declare @Result int
exec('SELECT @Result = SUM(Value) FROM Sale WHERE Product = ''' + @somevar + ''' AND Month = ''' + @othervar + ''' GROUP BY Product')
这就是我得到的: Must declare the scalar variable "@Result".
为什么?我在某些教程中看到了非常相似的代码,并且显然可以正常工作……我不知道这里出了什么问题,请帮忙。
问题是变量不在范围内 EXEC
您不需要SQL注入倾向的动态SQL GROUP BY
。
SELECT @Result = SUM(Value)
FROM Sale
WHERE Product = @somevar
AND Month = @othervar
如果是,为什么你需要动态SQL,那么你应该使用一些合法的理由sp_executesql
和参数。
DECLARE @Nsql NVARCHAR(MAX),
@Result INT;
SET @Nsql = N'SELECT @Result = SUM(Value)
FROM Sale
WHERE Product = @somevar
AND Month = @othervar'
EXEC sp_executesql
@Nsql,
N'@somevar VARCHAR(50), @othervar INT,@Result INT OUTPUT',
@somevar= @somevar,
@othervar=@othervar,
@Result = @Result OUTPUT;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句