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