我需要任何人的帮助。我试图从sp_executesql运行的查询中分配一个标量变量。我的查询如下:
select @sql = N'Select @found = count(' +@column+ ') from ' +@table+ ' where
+@column+ ' = ''' +@intVariable+''';';
EXECUTE sp_executesql @sql, N'@table nvarchar(max), @column nvarchar(max),
@temp_id nvarchar(max), @found int',
@table,@column,@temp_id,@found;
查询不会产生任何错误。但@found未分配查询结果。我试图改变设置但也一样。任何人都可以告诉我查询有什么问题?我一整天都这样做。
非常感谢您提供的所有帮助。
答案 0 :(得分:2)
您的脚本如下所示:
DECLARE @found int;
DECLARE @sql NVARCHAR(MAX) =
N'Select @found = count(' +QUOTENAME(@column)+ ') '+
N'from ' +QUOTENAME(@table)+ ' '+
N'where ' +QUOTENAME(@column)+ '=@intVariable;';
EXEC sp_executesql @sql, '@intVariable INT, @found INT OUTPUT', @intVariable, @found OUTPUT;
这有@found
作为OUTPUT变量。必须在参数字符串和将参数传递给sp_executesql
时指定它以输出值。
此外,QUOTENAME()用于正确转义对象名称。