Du kan bruge sp_executesql med outputparameter.
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
Resultat:
(No column name)
1
Rediger
I mit eksempel @S
er i stedet for din @template
. Som du kan se, tildeler jeg en værdi til @x
så du skal ændre @template
så den tildeler internt den kommaseparerede streng til den variabel, du definerer i dit andet argument til sp_executesql
. I mit eksempel N'@x int out'
. Du vil sandsynligvis have en varchar(max)
output parameter. Noget som N'@Result varchar(max) out'
Her er et andet eksempel på at bygge en kommasepareret streng fra 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