sql >> Databáze >  >> RDS >> Sqlserver

Přiřaďte výsledek dynamického sql proměnné

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


  1. Jak mohu vyřešit problém fondu připojení mezi ASP.NET a SQL Server?

  2. Jak povolit omezení cizího klíče v SQL Server (příklady T-SQL)

  3. sql skupina podle versus odlišné

  4. Je to v detailech