Můžete použít sp_executesql s výstupním parametrem.
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
Výsledek:
(No column name)
1
Upravit
V mém ukázkovém @S
je místo vašeho @template
. Jak vidíte, přiřazuji hodnotu @x
takže musíte upravit @template
takže interně přiřadí řetězec oddělený čárkami k proměnné, kterou definujete ve svém druhém argumentu do sp_executesql
. V mém příkladu N'@x int out'
. Pravděpodobně budete chtít varchar(max)
výstupní parametr. Něco jako N'@Result varchar(max) out'
Zde je další příklad vytvoření řetězce odděleného čárkami z 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