SQL सर्वर में, OPENQUERY रोसेट फ़ंक्शन आपको लिंक किए गए सर्वर पर पास-थ्रू क्वेरी निष्पादित करने में सक्षम बनाता है।
OPENQUERY आमतौर पर FROM . में संदर्भित किया जाता है किसी क्वेरी का खंड मानो वह एक तालिका हो, लेकिन इसे INSERT की लक्ष्य तालिका के रूप में भी संदर्भित किया जा सकता है , UPDATE , या DELETE बयान।
यह लेख OPENQUERY . का उपयोग करने का एक उदाहरण प्रस्तुत करता है एक DELETE करने के लिए पास-थ्रू क्वेरी।
उदाहरण
मान लीजिए लिंक किए गए सर्वर को Homer . कहा जाता है Pets . में एक टेबल है डेटाबेस जिसे Cats . कहा जाता है निम्नलिखित डेटा के साथ।
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
); परिणाम:
+---------+------------+ | CatId | CatName | |---------+------------| | 1 | FluffDupp | | 2 | Scratch | | 3 | Short Tail | +---------+------------+
और मान लें कि हम डेटाबेस से किसी एक कैट को हटाना चाहते हैं।
हम DELETE . का उपयोग करके ऐसा कर सकते हैं लिंक किए गए सर्वर के विरुद्ध पास-थ्रू क्वेरी, इस तरह।
DELETE OPENQUERY (
Homer,
'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 2'
); परिणाम:
(1 row affected)
परिणाम जांचें
अब हम एक SELECT चला सकते हैं परिणाम देखने के लिए पास-थ्रू क्वेरी।
SELECT * FROM OPENQUERY (
Homer,
'SELECT * FROM Pets.dbo.Cats'
); परिणाम:
+---------+------------+ | CatId | CatName | |---------+------------| | 1 | FluffDupp | | 3 | Short Tail | +---------+------------+
जैसा कि अपेक्षित था, दूसरी पंक्ति हटा दी गई थी, और अब केवल दो पंक्ति शेष हैं।
ध्यान देने वाली एक बात यह है कि OPENQUERY अपने तर्कों के लिए चर स्वीकार नहीं करता है।