MySQL স্টোরড প্রসিডিউর বা ফাংশনের ভেতরে локал ভেরিয়েবল ডিক্লেয়ার করতে DECLARE স্টেটমেন্ট ব্যবহার করা হয়। এটি `BEGIN ... END` ব্লকের শুরুতে লিখতে হয়।
সিনট্যাক্স
DECLARE yourVariableName yourDataType;
উদাহরণ: বর্গফল বের করার প্রসিডিউর
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 ... END` ব্লকের **শুরুতে** লিখতে হয় (কোনো স্টেটমেন্টের পরে নয়)।
- একসাথে একাধিক ভেরিয়েবল:
DECLARE a, b INT DEFAULT 0; - ডিফল্ট মান:
DECLARE counter INT DEFAULT 0; - স্কোপ: শুধু ওই `BEGIN ... END` ব্লকের ভিতর।
সেশন ভেরিয়েবল (@var) সাথে পার্থক্য
| বিষয় | DECLARE (লোকাল) | @variable (সেশন) |
|---|---|---|
| স্কোপ | প্রসিডিউর/ফাংশন ব্লক | পুরো সেশন |
| সিনট্যাক্স | DECLARE x INT; | SET @x = 1; |
| প্রিফিক্স | কোনো প্রিফিক্স নেই | @ দিয়ে শুরু |
সর্বোত্তম অনুশীলন
- লজিকের জন্য লোকাল ভেরিয়েবল (DECLARE) ব্যবহার করুন।
- সেশন-వাইড সেটিং বা ডিবাগের জন্য @variable ব্যবহার করুন।