কম্পিউটার টিউটোরিয়াল

MySQL Workbench-এ DECLARE সিনট্যাক্স এরর সমাধান

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" দেখাবে।

  1. MySQL-এ ভেরিয়েবল কীভাবে ঘোষণা করবেন?

  2. MySQL এরর #1046 - কোনো ডাটাবেস নির্বাচন করা হয়নি

  3. MySQL-এ স্টোরড প্রসিডিউরে DECLARE দিয়ে ভেরিয়েবল তৈরি করা

  4. MySQL কীভাবে কনস্ট্রেইন্টস পরিচালনা করে?