आउटपुट पैरामीटर के लिए यूजर-डिफाइंड वेरिएबल (@) का उपयोग करें
MySQL स्टोर्ड प्रोसीजर सीधे मान नहीं लौटाते (फंक्शन के विपरीत)। मान वापस पाने के लिए OUT पैरामीटर के साथ यूजर-डिफाइंड सेशन वेरिएबल (@variable) का उपयोग करें।
सिंटैक्स
-- प्रोसीजर में OUT पैरामीटर CREATE PROCEDURE proc_name (IN param1 INT, OUT result INT) ... -- कॉल करते समय @variable पास करें CALL proc_name(10, @result); -- परिणाम प्राप्त करें SELECT @result;
व्यावहारिक उदाहरण
स्टोर्ड प्रोसीजर बनाना
mysql> DELIMITER //
mysql> CREATE PROCEDURE ReturnValueFrom_StoredProcedure (
IN num1 INT,
IN num2 INT,
OUT valido INT
)
BEGIN
IF (num1 > 4 AND num2 > 5) THEN
SET valido = (num1 + num2);
ELSE
SET valido = (num1 - num2);
END IF;
SELECT @valido; -- प्रोसीजर के अंदर भी देख सकते हैं
END //
mysql> DELIMITER ;
पहला कॉल: योग (शर्त पूरी होती है)
mysql> CALL ReturnValueFrom_StoredProcedure(10, 6, @TotalSum);
+---------+ | @valido | +---------+ | NULL | +---------+
परिणाम प्राप्त करें:
mysql> SELECT @TotalSum;
+-----------+ | @TotalSum | +-----------+ | 16 | +-----------+
दूसरा कॉल: अंतर (शर्त पूरी नहीं होती)
mysql> CALL ReturnValueFrom_StoredProcedure(4, 2, @TotalDiff);
+---------+ | @valido | +---------+ | NULL | +---------+
परिणाम प्राप्त करें:
mysql> SELECT @TotalDiff;
+------------+ | @TotalDiff | +------------+ | 2 | +------------+
मुख्य बिंदु
- प्रोसीजर पैरामीटर में
OUTकीवर्ड का उपयोग करें। - कॉल करते समय
@variableName(यूजर-डिफाइंड वेरिएबल) पास करें। - कॉल के बाद
SELECT @variableNameसे मान पढ़ें। - प्रोसीजर के अंदर
SELECT @validoNULL दिखा सकता है क्योंकि आउटपुट पैरामीटर कॉलर के वेरिएबल में सेट होता है।
विकल्प: फंक्शन का उपयोग करें
यदि आप सीधे SELECT में मान चाहते हैं, तो स्टोर्ड फंक्शन (CREATE FUNCTION) बनाएं जो RETURNS प्रकार घोषित करता है और RETURN value करता है।