MySQL में स्टोर्ड प्रोसीजर से एकाधिक प्रोसीजर कॉल करना
MySQL में, एक स्टोर्ड प्रोसीजर CALL स्टेटमेंट का उपयोग करके अन्य स्टोर्ड प्रोसीजर को कॉल कर सकता है। यह मॉड्यूलर, पुन: प्रयोज्य डेटाबेस लॉजिक को सक्षम करता है।
सिंटैक्स
DELIMITER //
CREATE PROCEDURE yourProcedureName()
BEGIN
CALL yourStoredProcedureName1();
CALL yourStoredProcedureName2();
-- ... अधिक कॉल
END //
DELIMITER ;
पूर्ण कार्यान्वयन उदाहरण
1. पहला प्रोसीजर बनाएं
mysql> DELIMITER //
mysql> CREATE PROCEDURE hello_message()
-> BEGIN
-> SELECT 'HELLO WORLD !!';
-> END //
Query OK, 0 rows affected (0.19 sec)
2. दूसरा प्रोसीजर बनाएं
mysql> CREATE PROCEDURE hi_message()
-> BEGIN
-> SELECT 'HI !!!!';
-> END //
Query OK, 0 rows affected (0.11 sec)
mysql> DELIMITER ;
3. मास्टर प्रोसीजर बनाएं जो दोनों को कॉल करता है
mysql> DELIMITER //
mysql> CREATE PROCEDURE call_all_stored_procedure()
-> BEGIN
-> CALL hello_message();
-> CALL hi_message();
-> END //
Query OK, 0 rows affected (0.26 sec)
mysql> DELIMITER ;
4. मास्टर प्रोसीजर निष्पादित करें
mysql> CALL call_all_stored_procedure();
आउटपुट
+----------------+ | HELLO WORLD !! | +----------------+ | HELLO WORLD !! | +----------------+ 1 row in set (0.06 sec) +---------+ | HI !!!! | +---------+ | HI !!!! | +---------+ 1 row in set (0.06 sec) Query OK, 0 rows affected (0.08 sec)
मुख्य अवधारणाएं
- DELIMITER स्टेटमेंट विभाजक को अस्थायी रूप से बदलता है (डिफ़ॉल्ट ; से // तक)
- BEGIN ... END ब्लॉक कई स्टेटमेंट को समूहित करता है
- CALL एक स्टोर्ड प्रोसीजर को आमंत्रित करता है
- प्रोसीजर परिणाम सेट लौटा सकते हैं (जैसा कि यहां दिखाया गया है)
सर्वोत्तम अभ्यास
- टकराव से बचने के लिए प्रोसीजर नामों को विशिष्ट रखें
- जटिल लॉजिक के लिए आउटपुट पैरामीटर (OUT/INOUT) का उपयोग करें
- लेन-देन प्रबंधन के लिए हैंडलर जोड़ें
- DEFINER और SQL SECURITY विशेषताओं पर विचार करें