स्थिर प्रश्नों के लिए, जैसे आपके प्रश्न में, तालिका के नाम और स्तंभ नाम स्थिर होने चाहिए।
गतिशील प्रश्नों के लिए आपको गतिशील रूप से पूर्ण SQL उत्पन्न करना चाहिए, और इसे निष्पादित करने के लिए sp_executesql का उपयोग करना चाहिए।
विभिन्न डेटाबेस के समान तालिकाओं के बीच डेटा की तुलना करने के लिए उपयोग की जाने वाली स्क्रिप्ट का एक उदाहरण यहां दिया गया है:
स्थिर क्वेरी:
SELECT * FROM [DB_ONE].[dbo].[ACTY]
EXCEPT
SELECT * FROM [DB_TWO].[dbo].[ACTY]
चूंकि मैं आसानी से tha नाम बदलना चाहता हूं 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
चूंकि डायनामिक क्वेरी में कई विवरण होते हैं, जिन पर विचार करने की आवश्यकता होती है और वे कठिन होते हैं, मैं आपको सलाह देता हूं कि आप पढ़ें: गतिशील एसक्यूएल का अभिशाप और आशीर्वाद