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

Nama tabel sebagai variabel

Untuk kueri statis, seperti yang ada di pertanyaan Anda, nama tabel dan nama kolom harus statis.

Untuk kueri dinamis, Anda harus membuat SQL lengkap secara dinamis, dan menggunakan sp_executesql untuk menjalankannya.

Berikut adalah contoh skrip yang digunakan untuk membandingkan data antara tabel yang sama dari database yang berbeda:

Kueri statis:

SELECT * FROM [DB_ONE].[dbo].[ACTY]
EXCEPT
SELECT * FROM [DB_TWO].[dbo].[ACTY]

Karena saya ingin dengan mudah mengubah nama table dan schema , saya telah membuat kueri dinamis ini:

declare @schema varchar(50)
declare @table varchar(50)
declare @query nvarchar(500)

set @schema = 'dbo'
set @table = 'ACTY'

set @query = 'SELECT * FROM [DB_ONE].[' + @schema + '].[' + @table + '] EXCEPT SELECT * FROM [DB_TWO].[' + @schema + '].[' + @table + ']'

EXEC sp_executesql @query

Karena kueri dinamis memiliki banyak detail yang perlu dipertimbangkan dan sulit dipelihara, saya sarankan Anda membaca:Kutukan dan berkah SQL dinamis



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah varchar menjadi datetime di SQL Server

  2. SQL:Perbarui baris dan kembalikan nilai kolom dengan 1 kueri

  3. Aplikasi C# multi-threading dengan panggilan database SQL Server

  4. Buat Profil Publik Default untuk Database Mail di SQL Server (T-SQL)

  5. Database Sistem SQL Server – Pemeliharaan Tempdb