Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Присвойте резултата от динамичния sql на променлива

Можете да използвате 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 . В моята проба 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обосновка за редовно обслужване на SQL сървър

  2. SQL Server SELECT в съществуваща таблица

  3. Как да създадете съхранена процедура в SQL Server

  4. Промяна на съпоставянето на SQL Server на нечувствително към главни и малки букви?

  5. GETUTCDATE() Примери в SQL Server (T-SQL)