从 sp_executesql 分配标量变量

问题描述 投票:0回答:1

我需要任何人的帮助。我正在尝试从 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 没有分配查询结果。我尝试更改设置但也一样。谁能告诉我查询有什么问题吗?我一整天都在这样做。

sql sql-server sql-server-2008
1个回答
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
作为输出变量。有必要在参数字符串中以及将参数传递给
sp_executesql
以输出值时指定这一点。

此外,QUOTENAME() 用于正确转义对象名称。

© www.soinside.com 2019 - 2024. All rights reserved.