यूजर-डिफाइंड वेरिएबल से आउटपुट कैप्चर करें
MySQL स्टोर्ड प्रोसीजर डिफ़ॉल्ट रूप से परिणाम सेट लौटाता है। आउटपुट दबाकर वेरिएबल में स्टोर करने के लिए सेशन वेरिएबल (@var) का उपयोग करें।
उदाहरण
टेबल बनाएं:
mysql> CREATE TABLE person_information (
-> Id INT, Name VARCHAR(20)
-> );
mysql> INSERT INTO person_information VALUES(100, 'John'), (101, 'Chris'), (102, 'Robert');
आउटपुट सप्रेस करने वाला प्रोसीजर बनाएं
mysql> DELIMITER //
mysql> CREATE PROCEDURE sp_suppressOutputDemo()
-> BEGIN
-> SET @output = (SELECT Name FROM person_information WHERE Id = 101);
-> END //
mysql> DELIMITER ;
प्रोसीजर कॉल करें
mysql> CALL sp_suppressOutputDemo();
आउटपुट: Query OK, 0 rows affected (0.00 sec) - कोई परिणाम सेट नहीं दिखता।
वेरिएबल से मान प्राप्त करें
mysql> SELECT @output;
परिणाम:
+---------+ | @output | +---------+ | Chris | +---------+
मुख्य बिंदु
SET @var = (SELECT ...)- सबक्वेरी का परिणाम वेरिएबल में स्टोर करता है- प्रोसीजर में
SELECTबिनाINTOके परिणाम सेट लौटाता है SELECT ... INTO @varभी उपयोग कर सकते हैं- वेरिएबल नाम
@से शुरू होना चाहिए (सेशन वेरिएबल)
वैकल्पिक: INTO क्लॉज
CREATE PROCEDURE sp_getName()
BEGIN
SELECT Name INTO @output FROM person_information WHERE Id = 101;
END
उपयोग केस: प्रोसीजर को केवल आंतरिक गणना के लिए उपयोग करना, परिणाम एप्लिकेशन लेयर में प्रोसेस करना।