DECLARE स्टेटमेंट BEGIN...END ब्लॉक के पहले भाग में
MySQL स्टोर्ड प्रोसीजर में वेरिएबल घोषित करने के लिए DECLARE स्टेटमेंट का उपयोग BEGIN और END के बीच, किसी भी अन्य स्टेटमेंट से पहले करें।
सही सिंटैक्स
DELIMITER //
CREATE PROCEDURE procedure_name()
BEGIN
DECLARE variable_name data_type [DEFAULT default_value];
-- अन्य स्टेटमेंट (SET, SELECT, INSERT, आदि)
END //
DELIMITER ;
उदाहरण
mysql> DELIMITER //
mysql> CREATE PROCEDURE showVariablesValue()
-> BEGIN
-> DECLARE output VARCHAR(100);
-> SET output = "Hello MySQL";
-> SELECT output;
-> END //
mysql> DELIMITER ;
प्रोसीजर कॉल करें
mysql> CALL showVariablesValue();
परिणाम:
+-------------+ | output | +-------------+ | Hello MySQL | +-------------+
आम गलतियां
| गलत | सही |
|---|---|
DECLARE के बाद SET | DECLARE पहले, फिर SET |
BEGIN से पहले DECLARE | BEGIN के तुरंत बाद DECLARE |
| डेटा टाइप भूलना | DECLARE x INT; टाइप अनिवार्य |
| एक DECLARE में कई वेरिएबल | प्रत्येक के लिए अलग DECLARE (MySQL 8.0 से पहले) |
MySQL 8.0+ में एकाधिक घोषणा
DECLARE x INT DEFAULT 0; DECLARE y, z VARCHAR(50); -- 8.0+ में समर्थित
स्कोप और जीवनकाल
- वेरिएबल केवल प्रोसीजर बॉडी के भीतर दृश्यमान
- प्रत्येक CALL पर नया इंस्टेंस बनता है
- नेस्टेड ब्लॉक में बाहरी वेरिएबल छुपाए जा सकते हैं
सेशन वेरिएबल (@var) से अंतर: DECLARE लोकल वेरिएबल बनाता है (प्रोसीजर-स्कोप), SET @var सेशन-स्कोप वेरिएबल बनाता है।