MySQL में स्टोर्ड प्रोसीजर के अंदर लोकल वेरिएबल घोषित करने के लिए DECLARE स्टेटमेंट का उपयोग करें। ये वेरिएबल केवल प्रोसीजर के BEGIN...END ब्लॉक के भीतर दृश्यमान होते हैं और इंटरमीडिएट गणना, अस्थायी मान स्टोर करने के लिए उपयोगी हैं।
सिंटैक्स
DECLARE variable_name data_type [DEFAULT default_value];
उदाहरण: वर्ग गणना करने वाला स्टोर्ड प्रोसीजर
स्टोर्ड प्रोसीजर बनाएं:
mysql> DELIMITER //
mysql> CREATE PROCEDURE square_demo(IN Value INT)
BEGIN
DECLARE magicValue INT;
SET magicValue = Value;
SELECT CONCAT('Your Square Value=', magicValue * magicValue) AS Output;
END //
mysql> DELIMITER ;
प्रोसीजर कॉल करें:
mysql> CALL square_demo(15);
आउटपुट:
+-----------------------+ | Output | +-----------------------+ | Your Square Value=225 | +-----------------------+
मुख्य बिंदु
- DECLARE स्थान: BEGIN के तुरंत बाद, किसी अन्य स्टेटमेंट से पहले
- स्कोप: केवल उस BEGIN...END ब्लॉक के भीतर
- आरंभीकरण: DEFAULT क्लॉज़ या SET स्टेटमेंट से
- डेटा प्रकार: कोई भी वैध MySQL डेटा प्रकार
एकाधिक वेरिएबल घोषित करना
DECLARE x INT DEFAULT 0; DECLARE y, z VARCHAR(50) DEFAULT 'test'; DECLARE dt DATETIME DEFAULT CURRENT_TIMESTAMP;
वेरिएबल असाइनमेंट
-- SET के साथ SET var_name = expression; -- SELECT INTO के साथ (क्वेरी परिणाम से) SELECT COUNT(*) INTO var_name FROM table WHERE condition;
उन्नत उदाहरण: लूप में वेरिएबल उपयोग
CREATE PROCEDURE sum_loop(IN n INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE total INT DEFAULT 0;
WHILE i <= n DO
SET total = total + i;
SET i = i + 1;
END WHILE;
SELECT total AS sum_1_to_n;
END
यूज़र-डिफ़ाइंड वेरिएबल (@var) vs लोकल वेरिएबल
| विशेषता | @user_variable | DECLARE variable |
|---|---|---|
| स्कोप | सेशन | प्रोसीजर ब्लॉक |
| घोषणा | आवश्यक नहीं | आवश्यक (DECLARE) |
| टाइप सुरक्षा | नहीं | हां |
| प्रदर्शन | थोड़ा धीमा | तेज़ |
स्टोर्ड प्रोसीजर में हमेशा DECLARE (लोकल वेरिएबल) प्राथमिकता दें; @ वेरिएबल सेशन-लेवल सेटिंग्स के लिए उपयोग करें।