任何人都知道在执行sp_executesql期间是否可以更改输入变量?
例如,我想将@var值更改为'bye'
declare @var varchar(10) = 'hello'
declare @Query nvarchar(max) = 'print @var set @var = ''bye'' print @var'
EXEC SP_EXECUTESQL @Query, N'@var varchar(10)', @var -- Execute Query Statement
print @var
我最后一次打印@var时,我期待打印'再见',但打印'你好'。
可以在不声明输出变量的情况下实现我的目标吗?
提前致谢
答案 0 :(得分:2)
您必须使用output
参数:
declare @var varchar(10) = 'hello'
declare @Query nvarchar(max) = 'print @var set @var = ''bye'' print @var'
EXEC SP_EXECUTESQL @Query, N'@var varchar(10) output', @var output
print @var -- This prints bye
请注意,输出都在变量声明中,而实际参数都在sp_executesql
。