我可以在执行sp_executesql时更改输入参数值吗?

时间:2013-01-16 14:47:24

标签: sql tsql dynamic-sql

任何人都知道在执行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时,我期待打印'再见',但打印'你好'。

可以在不声明输出变量的情况下实现我的目标吗?

提前致谢

1 个答案:

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