sp_executesqlを出力パラメータとともに使用できます。
declare @S nvarchar(max) = 'select @x = 1'
declare @xx int
set @xx = 0
exec sp_executesql @S, N'@x int out', @xx out
select @xx
結果:
(No column name)
1
編集
私のサンプルでは@S
@template
の代わりに 。ご覧のとおり、@x
に値を割り当てています したがって、@template
を変更する必要があります そのため、sp_executesql
の2番目の引数で定義した変数にコンマ区切りの文字列を内部的に割り当てます。 。私のサンプルでは、N'@x int out'
。おそらくvarchar(max)
が必要です 出力パラメータ。 N'@Result varchar(max) out'
のようなもの
これは、master..spt_values
からコンマ区切りの文字列を作成する別の例です。declare @template nvarchar(max)
set @template =
'select @Result += cast(number as varchar(10))+'',''
from master..spt_values
where type = ''P''
'
declare @CommaString varchar(max)
set @CommaString = ''
exec sp_executesql @template, N'@Result varchar(max) out', @CommaString out
select @CommaString