स्थिर प्रश्नों के लिए, जैसे आपके प्रश्न में, तालिका नाम और स्तंभ नाम स्थिर होने चाहिए।
गतिशील प्रश्नों के लिए, आपको गतिशील रूप से पूर्ण 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
चूंकि गतिशील प्रश्नों में कई विवरण होते हैं जिन पर विचार करने की आवश्यकता होती है और उन्हें बनाए रखना कठिन होता है, मैं अनुशंसा करता हूं कि आप पढ़ें:गतिशील एसक्यूएल का अभिशाप और आशीर्वाद