質問のような静的クエリの場合、テーブル名と列名は静的である必要があります。
動的クエリの場合は、完全なSQLを動的に生成し、sp_executesqlを使用して実行する必要があります。
異なるデータベースの同じテーブル間でデータを比較するために使用されるスクリプトの例を次に示します。
静的クエリ:
SELECT * FROM [DB_ONE].[dbo].[ACTY]
EXCEPT
SELECT * FROM [DB_TWO].[dbo].[ACTY]
table
の名前を簡単に変更したいので およびschema
、この動的クエリを作成しました:
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
動的クエリには考慮する必要のある詳細が多く、保守が難しいため、次の内容を読むことをお勧めします。動的SQLの呪いと祝福