MySQL स्टोर्ड प्रोसीजर में IF-THEN-END IF कंडीशनल लॉजिक का उपयोग
MySQL स्टोर्ड प्रोसीजर में IF ... THEN ... END IF ब्लॉक का उपयोग करके शर्तीय लॉजिक लागू कर सकते हैं, जैसे पैरामीटर के आधार पर अलग-अलग क्रियाएं करना।
उदाहरण के साथ पूर्ण कार्यान्वयन
टेबल बनाना
mysql> CREATE TABLE DemoTable643 (ClientId INT);
रिकॉर्ड डालना
mysql> INSERT INTO DemoTable643 VALUES(1000);
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable643;
आउटपुट:
+----------+
| ClientId |
+----------+
| 1000 |
+----------+
1 row in set (0.00 sec)
IF-THEN-END IF के साथ स्टोर्ड प्रोसीजर बनाना
mysql> DELIMITER //
mysql> CREATE PROCEDURE IF_DEMO(argument INT)
BEGIN
DECLARE firstArgument INT DEFAULT 0;
DECLARE secondArgument INT DEFAULT 1;
IF firstArgument = argument THEN
INSERT INTO DemoTable643 VALUES(2000);
END IF;
IF secondArgument = argument THEN
SELECT * FROM DemoTable643;
END IF;
END //
mysql> DELIMITER ;
प्रोसीजर कॉल करना: argument = 0
mysql> CALL IF_DEMO(0);
परिणाम: Query OK, 1 row affected (0.17 sec) (2000 डाला गया, कोई परिणाम सेट नहीं)
प्रोसीजर कॉल करना: argument = 1
mysql> CALL IF_DEMO(1);
आउटपुट:
+----------+
| ClientId |
+----------+
| 1000 |
| 2000 |
+----------+
2 rows in set (0.00 sec)
Query OK, 0 rows affected (0.03 sec)
व्याख्या:
argument = 0: पहली IF सत्य → 2000 डाला गया; दूसरी IF असत्य → कोई SELECT नहींargument = 1: पहली IF असत्य; दूसरी IF सत्य → सभी रिकॉर्ड चुने गए (1000 और 2000)
IF-ELSEIF-ELSE संरचना
CREATE PROCEDURE DemoProc(IN score INT)
BEGIN
DECLARE grade VARCHAR(10);
IF score >= 90 THEN
SET grade = 'A';
ELSEIF score >= 80 THEN
SET grade = 'B';
ELSEIF score >= 70 THEN
SET grade = 'C';
ELSE
SET grade = 'F';
END IF;
SELECT grade;
END
IF ब्लॉक में एकाधिक स्टेटमेंट
IF condition THEN
Statement1;
Statement2;
-- ...
END IF;
नेस्टेड IF
IF outer_condition THEN
IF inner_condition THEN
-- ...
END IF;
END IF;
केस स्टेटमेंट विकल्प (अधिक पठनीय एकाधिक शर्तों के लिए)
CASE argument
WHEN 0 THEN INSERT ...
WHEN 1 THEN SELECT ...
ELSE SELECT 'Invalid argument';
END CASE;
महत्वपूर्ण नोट्स
- प्रत्येक
IFके लिए मिलानEND IFआवश्यक THENके बाद स्टेटमेंट सेमीकोलन से समाप्तDECLAREवेरिएबलBEGINके तुरंत बाद होने चाहिए- स्टोर्ड प्रोसीजर में
SELECTपरिणाम सेट क्लाइंट को लौटाता है