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

时间:2015-01-02 06:58:35

标签: sql sql-server sql-server-2008 select

我必须将动态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正在打印空字符串,尽管数据库表中有记录。

此查询有什么问题?

感谢

4 个答案:

答案 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