IF-ELSE और SELECT CONCAT से शर्तीय संदेश प्रदर्शित करें
स्टोर्ड प्रोसीजर में शर्तों के आधार पर कस्टम संदेश लौटाने के लिए IF-ELSE ब्लॉक के अंदर SELECT CONCAT() का उपयोग करें।
स्टोर्ड प्रोसीजर बनाना
mysql> DELIMITER //
mysql> CREATE PROCEDURE showMessage(value INT, Name VARCHAR(20))
-> BEGIN
-> IF(value > 100) THEN
-> SELECT CONCAT("HELLO", " ", Name);
-> ELSE
-> SELECT CONCAT("BYE", " ", Name);
-> END IF;
-> END //
Query OK, 0 rows affected (0.18 sec)
mysql> DELIMITER ;
केस 1: मान 100 से अधिक
mysql> CALL showMessage(200, 'John');
+--------------------------+
| CONCAT("HELLO"," ",Name) |
+--------------------------+
| HELLO John |
+--------------------------+
केस 2: मान 100 से कम
mysql> CALL showMessage(10, 'John');
+------------------------+
| CONCAT("BYE"," ",Name) |
+------------------------+
| BYE John |
+------------------------+
DELIMITER का महत्व
DELIMITER // प्रोसीजर परिभाषा में सेमीकॉलन उपयोग करने के लिए आवश्यक है। अंत में DELIMITER ; से डिफ़ॉल्ट पर वापस आएं।
बेहतर दृष्टिकोण: OUT पैरामीटर
CREATE PROCEDURE showMessage2(
IN value INT,
IN Name VARCHAR(20),
OUT message VARCHAR(100)
)
BEGIN
IF value > 100 THEN
SET message = CONCAT('HELLO ', Name);
ELSE
SET message = CONCAT('BYE ', Name);
END IF;
END;
-- कॉल करना
CALL showMessage2(200, 'John', @msg);
SELECT @msg;
अन्य उपयोगी पैटर्न
-- SIGNAL से कस्टम त्रुटि
IF value < 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Value cannot be negative';
END IF;
-- लॉग टेबल में डालना
INSERT INTO log_table(message) VALUES(CONCAT('User ', Name, ' processed'));