परिचय
MySQL स्टोर्ड प्रोसीजर में एकाधिक SELECT स्टेटमेंट हो सकते हैं, और प्रत्येक अपना अलग परिणाम सेट लौटाता है। यह लेख दिखाता है कि कैसे एक प्रोसीजर में दो SELECT स्टेटमेंट बनाएं और कॉल करें।
स्टोर्ड प्रोसीजर बनाना
mysql> DELIMITER //
mysql> CREATE PROCEDURE select_statement()
-> BEGIN
-> SELECT "HI" AS `FIRST VALUE`;
-> SELECT "HELLO" AS `SECOND VALUE`;
-> END
-> //
Query OK, 0 rows affected (0.09 sec)
mysql> DELIMITER ;
महत्वपूर्ण बिंदु:
DELIMITER //- स्टेटमेंट डिलीमीटर को अस्थायी रूप से // में बदलता है ताकि प्रोसीजर बॉडी में ; का उपयोग हो सकेDELIMITER ;- अंत में डिलीमीटर को वापस ; पर सेट करता है- बैकटिक्स (
`) कॉलम एलियास के लिए उपयोग किए गए हैं
प्रोसीजर कॉल करना
mysql> CALL select_statement();
परिणाम
+-------------+
| FIRST VALUE |
+-------------+
| HI |
+-------------+
1 row in set (0.00 sec)
+--------------+
| SECOND VALUE |
+--------------+
| HELLO |
+--------------+
1 row in set (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
व्याख्या
- प्रत्येक
SELECTअपना अलग परिणाम सेट उत्पन्न करता है - क्लाइंट एप्लिकेशन को एकाधिक परिणाम सेट्स को संभालने में सक्षम होना चाहिए
- JDBC में:
statement.execute()औरgetMoreResults()उपयोग करें - MySQL CLI में: स्वचालित रूप से सभी परिणाम सेट दिखाता है
उपयोग के मामले
- एक ही कॉल में संबंधित लेकिन अलग परिणाम सेट लौटाना
- रिपोर्टिंग: सारांश + विवरण
- मेटाडेटा + डेटा
नोट
कुछ कनेक्टर/ड्राइवर डिफ़ॉल्ट रूप से केवल पहला परिणाम सेट लौटाते हैं। एकाधिक परिणाम सेट्स के लिए कनेक्शन विकल्प या API विधि सक्षम करने की आवश्यकता हो सकती है (जैसे JDBC में allowMultiResults=true)।