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