将EXECUTE sp_executesql结果设置为sql中的变量

Kar*_*sla 6 sql sql-server select sql-server-2008

我必须将动态sql查询结果设置为变量.我的SQL查询是:

DECLARE @ResultString NVARCHAR(MAX)
DECLARE @Qry NVARCHAR(MAX)  

SET @Qry='SELECT Test FROM MTest22Dec WHERE ID = 1'      
EXECUTE sp_executesql @Qry, N'@Result NVARCHAR(MAX) OUTPUT', @Result=@ResultString OUTPUT
PRINT @ResultString
Run Code Online (Sandbox Code Playgroud)

但是@ResultString虽然数据库表中有记录,但是打印空字符串.

这个查询有什么问题?

谢谢

Pரத*_*ீப் 5

您需要将 select 的结果分配给variableinside Dynamic statement

像这样改变你的查询。

DECLARE @Result NVARCHAR(MAX)
DECLARE @Qry NVARCHAR(MAX)

SET @Qry='SELECT @Result = Test FROM MTest22Dec WHERE ID = 1'

EXECUTE Sp_executesql @Qry, N'@Result NVARCHAR(MAX) OUTPUT', @Result OUTPUT

PRINT @Result 
Run Code Online (Sandbox Code Playgroud)


Jan*_*ník 2

您必须在某处设置输出变量,例如。

SET @Qry='SELECT @Result = Test FROM MTest22Dec WHERE ID = 1'
Run Code Online (Sandbox Code Playgroud)