MySQL ডিলিমিটার এরর হয় যখন আপনি পাইপ ডিলিমিটার (|) সেমিকোলন (;) দিয়ে ব্যবহার করেন এবং MySQL সংস্করণ 8.0.12-র চেয়ে কম ব্যবহার করেন।
MySQL পাইপ (|) কে একটি ডিলিমিটার হিসেবে এবং সেমিকোলন (;) কে অন্য একটি ডিলিমিটার হিসেবে বিবেচনা করে। তাই MySQL ডিলিমিটারকে পাইপ এবং সেমিকোলন দিয়ে গুলিয়ে ফেলবেন না।
নোট: এখানে আমরা MySQL সংস্করণ 8.0.12 ব্যবহার করছি। পাইপ ডিলিমিটার সেমিকোলনের সাথে ঠিক কাজ করে। যদি আপনি 8.0.12-র চেয়ে পুরনো সংস্করণ ব্যবহার করেন, তবে এতে ডিলিমিটার এরর হবে।
MySQL ডিলিমিটারের কাজকর্ম নিচে দেওয়া হলো:
mysql> delimiter |; mysql> create procedure getSumOfTwoNumbers() -> begin -> select 2+3 as TotalValue; -> end ; -> |; Query OK, 0 rows affected (0.17 sec) mysql> delimiter ;
এখন CALL কমান্ড দিয়ে স্ট্রোড প্রসিডিউর কল করা যাক। কোয়েরিটি হলো:
mysql> call getSumOfTwoNumbers();
আউটপুট নিচে দেওয়া হলো:
+------------+ | TotalValue | +------------+ | 5 | +------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
উপরের পাইপ ডিলিমিটার সেমিকোলনের সাথে অর্জন করবেন না কারণ MySQL-এ সেমিকোলন ডিফল্ট ডিলিমিটার যা MySQL-এ স্টেটমেন্টের শেষ নির্দেশ করে। তাই সেমিকোলন ব্যবহার করা হয় MySQL স্ট্রোড প্রসিডিউর থেকে বের হওয়ার সময় যখন আপনি একাধিক স্টেটমেন্ট লিখেন।
ডিলিমিটার পরিবর্তনের উদাহরণ নিচে দেওয়া হলো।
প্রথমে পাইপ ডিলিমিটার (|) ব্যবহার করা যাক। ডিলিমিটার পাইপ সেট করতে নিচের কোয়েরি ব্যবহার করুন।
mysql> DELIMITER |
স্ট্রোড প্রসিডিউর তৈরির কোয়েরি নিচে দেওয়া হলো:
mysql> DELIMITER | mysql> create procedure Demo() -> begin -> select 2*3 as TotalMultiplication; -> end ; -> | Query OK, 0 rows affected (0.12 sec)
এখন ডিলিমিটার সেমিকোলন দিয়ে পরিবর্তন করা যাক। ডিলিমিটার সেমিকোলন সেট করতে নিচের কোয়েরি ব্যবহার করুন।
কোয়েরিটি হলো:
mysql> delimiter ;
সারসংক্ষেপে, MySQL-এ DELIMITER কমান্ড দিয়ে স্টেটমেন্ট টার্মিনেটর পরিবর্তন করা হয়। স্ট্রোড প্রসিডিউর, ট্রিগার, ফাংশন তৈরির সময় একাধিক স্টেটমেন্ট থাকলে ডিফল্ট সেমিকোলন (;) বদলে অন্য ডিলিমিটার (যেমন |, //) ব্যবহার করা হয়। MySQL 8.0.12+ এ পাইপ (|) সেমিকোলনের সাথে ভালো কাজ করে।