MySQL स्टोर्ड प्रोसीजर के अंदर IF ... THEN ... ELSE ... END IF लॉजिक का उपयोग करके शर्त के आधार पर अन्य स्टोर्ड प्रोसीजर कॉल कर सकते हैं।
सिंटैक्स
CREATE PROCEDURE मुख्य_प्रोसीजर(IN पैरामीटर टाइप)
BEGIN
IF शर्त THEN
CALL प्रोसीजर1();
ELSE
CALL प्रोसीजर2();
END IF;
END
उदाहरण
1. पहला प्रोसीजर
mysql> DELIMITER //
mysql> CREATE PROCEDURE Hello_Stored_Procedure()
-> BEGIN
-> SELECT 'Hello World!!!';
-> END //
Query OK
2. दूसरा प्रोसीजर
mysql> CREATE PROCEDURE Hi_Stored_Procedure()
-> BEGIN
-> SELECT 'Hi!!!';
-> END //
Query OK
3. IF लॉजिक वाला मुख्य प्रोसीजर
mysql> CREATE PROCEDURE test(IN input INT)
-> BEGIN
-> IF input > 100 THEN
-> CALL Hello_Stored_Procedure();
-> ELSE
-> CALL Hi_Stored_Procedure();
-> END IF;
-> END //
Query OK
4. कॉल करें
mysql> DELIMITER ; mysql> CALL test(110); -- 100 से बड़ा
+----------------+ | Hello World!!! | +----------------+ | Hello World!!! | +----------------+
mysql> CALL test(50); -- 100 या कम
+-------+ | Hi!!! | +-------+ | Hi!!! | +----------------+
महत्वपूर्ण बिंदु
DELIMITER //- स्टेटमेंट विभाजक बदलें ताकि प्रोसीजर बॉडी में ; उपयोग कर सकेंEND //- प्रोसीजर अंतDELIMITER ;- विभाजक बहाल करेंCALL प्रोसीजर_नाम()- प्रोसीजर आह्वानIF ... THEN ... ELSE ... END IF;- शर्ती लॉजिक (सेमीकोलन आवश्यक)
नेस्टेड IF/ELSEIF
CREATE PROCEDURE complex_logic(IN x INT)
BEGIN
IF x > 100 THEN
CALL proc_high();
ELSEIF x > 50 THEN
CALL proc_medium();
ELSEIF x > 0 THEN
CALL proc_low();
ELSE
CALL proc_invalid();
END IF;
END
त्रुटि हैंडलिंग
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
CALL log_error();
RESIGNAL;
END;
सर्वोत्तम अभ्यास
- प्रोसीजर छोटे और केंद्रित रखें
- पैरामीटर सत्यापन करें
- लेनदेन प्रबंधन (COMMIT/ROLLBACK) स्पष्ट करें
- डीबगिंग के लिए लॉगिंग जोड़ें