U kunt sp_executesql gebruiken met de uitvoerparameter.
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
Resultaat:
(No column name)
1
Bewerken
In mijn voorbeeld @S
is in plaats van uw @template
. Zoals je kunt zien, ken ik een waarde toe aan @x
dus je moet @template
wijzigen dus het wijst intern de door komma's gescheiden tekenreeks toe aan de variabele die u definieert in uw tweede argument aan sp_executesql
. In mijn voorbeeld N'@x int out'
. U wilt waarschijnlijk een varchar(max)
uitvoerparameter. Iets als N'@Result varchar(max) out'
Hier is nog een voorbeeld van het bouwen van een door komma's gescheiden tekenreeks van 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