Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Tetapkan hasil sql dinamis ke variabel

Anda dapat menggunakan sp_executesql dengan parameter keluaran.

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

Hasil:

(No column name)
1

Sunting

Dalam contoh saya @S bukan @template . Anda . Seperti yang Anda lihat, saya memberikan nilai ke @x jadi Anda perlu memodifikasi @template sehingga secara internal memberikan string yang dipisahkan koma ke variabel yang Anda definisikan dalam argumen kedua Anda ke sp_executesql . Dalam contoh saya N'@x int out' . Anda mungkin menginginkan varchar(max) parameter keluaran. Sesuatu seperti N'@Result varchar(max) out'

Berikut adalah contoh lain membangun string yang dipisahkan koma dari 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. Bagaimana mencegah shutdown otomatis SQL Server LocalDB?

  2. Arsitektur SQL Server AlwaysOn (Availability Group) dan Instalasi Langkah demi Langkah -2

  3. Pilih pernyataan untuk menemukan duplikat pada bidang tertentu

  4. Terhubung ke Database MSSQL menggunakan Flask-SQLAlchemy

  5. Buat Fungsi Bernilai Tabel Sebaris (ITVF) di SQL Server