sql >> Database teknologi >  >> RDS >> Sqlserver

Tildel resultat af dynamisk sql til variabel

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


  1. Sådan fjerner du førende og efterfølgende hvidt mellemrum i SQL Server - TRIM()

  2. Hvilken størrelse bruger du til varchar(MAX) i din parametererklæring?

  3. Skift sikkerhedsgruppe på AWS RDS-databaseinstans

  4. Sådan rangeres over partition i MySQL