我必须将动态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
正在打印空字符串,尽管数据库表中有记录。
此查询有什么问题?
感谢
答案 0 :(得分:3)
您需要将select的结果分配到variable
内的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
答案 1 :(得分:2)
您必须在某处设置输出变量,例如
SET @Qry='SELECT @Result = Test FROM MTest22Dec WHERE ID = 1'
答案 2 :(得分:1)
试试这个:
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
答案 3 :(得分:0)
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