MySQL-এ DECLARE স্টেটমেন্ট শুধু BEGIN ... END ব্লকের ভিতরে (স্টোরড প্রসিডিউর, ফাংশন, ট্রিগার) ব্যবহার করা যায়। বাহিরে ব্যবহার করলে সিনট্যাক্স এরর হয়।
সঠিক সিনট্যাক্স
BEGIN
DECLARE variable_name data_type;
DECLARE variable_name2 data_type DEFAULT default_value;
-- স্টেটমেন্টগুলো
END
উদাহরণ: স্টোরড প্রসিডিউর
DELIMITER //
CREATE PROCEDURE declare_demo()
BEGIN
DECLARE v_name VARCHAR(100);
SET v_name = 'John';
SELECT v_name;
END //
DELIMITER ;
-- কল করুন
CALL declare_demo();
ফলাফল
+------+
| v_name |
+------+
| John |
+------+
সাধারণ ভুলগুলো
ভুল ১: BEGIN...END বাইরে DECLARE
-- ভুল
DECLARE v_name VARCHAR(100);
SET v_name = 'John';
ভুল ২: DECLARE-এর পর সেমিকোলন ভুলে যাওয়া
BEGIN
DECLARE v_name VARCHAR(100) -- সেমিকোলন নেই
SET v_name = 'John';
END
ভুল ৩: ভেরিয়েবল নামের আগে @ ব্যবহার করা
BEGIN
DECLARE @v_name VARCHAR(100); -- ভুল: @ লাগবে না
SET @v_name = 'John'; -- এটি সেশন ভেরিয়েবল
END
সঠিক: DECLARE v_name VARCHAR(100); (কোনো @ নেই)
DECLARE এর বৈশিষ্ট্য
- শুধু কম্পাউন্ড স্টেটমেন্ট (
BEGIN...END) এর শুরুতে অনুমোদিত - ডিফল্ট ভ্যালু:
DEFAULT valueক্লজ দিয়ে দিন - স্কোপ: শুধু ওই
BEGIN...ENDব্লকের ভিতর - একই লাইনে একাধিক:
DECLARE a INT, b VARCHAR(20);
ডিবাগিং টিপ
Workbench-এ এরর মেসেজের লাইন নম্বর দেখুন। DECLARE এরর সাধারণত "DECLARE is only valid inside a compound statement" দেখাবে।