0

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 を印刷したとき、'bye' が印刷されることを期待していましたが、'hello' が印刷されました。

出力変数を宣言せずに目的を達成できますか?

前もって感謝します

4

1 に答える 1

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

于 2013-01-16T14:50:44.243 に答える