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

Set EXECUTE sp_executesql result into a variable in sql

我必须将动态 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

但是 @ResultString 正在打印空字符串,尽管数据库中有记录 table。

这个查询有什么问题?

谢谢

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

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

您需要将select的结果赋值给Dynamic statement中的variable

改成这样查询。

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 

试试这个:

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

SET @Qry='SELECT @ResultString = Test FROM MTest22Dec WHERE ID = 1'      
EXECUTE sp_executesql @Qry, N'@ResultString NVARCHAR(MAX) OUTPUT', @ResultString OUTPUT
PRINT @ResultString

试试这个:

Declare @Query NVARCHAR(100)
Declare @ResultString varchar(50)

set @Query =N'select @ResultString=Test from dbo.MTest22Dec where id = @id'

exec sp_executesql @Query, N'@id int,@ResultString varchar(20) output',
@id = 1,@ResultString=@ResultString output

print @ResultString