我需要任何人的帮助。我正在尝试从 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 没有分配查询结果。我尝试更改设置但也一样。谁能告诉我查询有什么问题吗?我一整天都在这样做。
您的脚本将如下所示:
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
作为输出变量。有必要在参数字符串中以及将参数传递给 sp_executesql
以输出值时指定这一点。
此外,QUOTENAME() 用于正确转义对象名称。