Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में स्टोर्ड प्रोसीजर के भीतर IF लॉजिक से अन्य स्टोर्ड प्रोसीजर कॉल करें

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) स्पष्ट करें
  • डीबगिंग के लिए लॉगिंग जोड़ें
  1. MySQL वर्कबेंच का उपयोग करके स्टोर्ड प्रोसीजर कैसे बनाएं? MySQL वर्कबेंच का उपयोग करके स्टोर्ड प्रोसीजर कैसे बनाएं?

    आइए पहले एक स्टोर्ड प्रोसीजर बनाते हैं। MySQL वर्कबेंच का उपयोग करके स्टोर्ड प्रोसीजर बनाने का क्वेरी: use business; DELIMITER // DROP PROCEDURE IF EXISTS SP_GETMESSAGE; CREATE PROCEDURE SP_GETMESSAGE() BEGIN DECLARE MESSAGE VARCHAR(100); SET MESSAGE=HELLO; SELECT CONCAT(MESSAGE, ,MYSQL!!!!); END //

  1. - MySQL में शर्त के साथ स्टोर्ड प्रोसीजर से रिकॉर्ड कैसे अपडेट करें?

    MySQL में स्टोर्ड प्रोसीजर के अंदर UPDATE और WHERE क्लॉज का उपयोग करके शर्त के आधार पर रिकॉर्ड अपडेट किए जा सकते हैं। सिंटैक्स DELIMITER // CREATE PROCEDURE procedure_name(IN param1 TYPE, IN param2 TYPE) BEGIN UPDATE table_name SET col1 = param1, col2 = param2 WHERE condition; END // DE

  1. - MySQL स्टोर्ड प्रोसीजर में NULL या खाली वेरिएबल की जांच करें

    NULL या खाली वेरिएबल की जांच के लिए IF कंडीशन का उपयोग करें। आइए एक स्टोर्ड प्रोसीजर बनाते हैं: mysql> delimiter // mysql> create procedure checkingForNullDemo(Name varchar(20)) begin if Name is NULL OR Name= then select Adam Smith; else select Name; end if ; end /