MySQL স্টোরড প্রোসিজার লিখা এবং ব্যবহার শুরু করার আগে নিচের পূর্বশর্তগুলো থাকতে হবে:
MySQL ভার্সন
MySQL 5 স্টোরড প্রোসিজার চালু করেছে, তাই সবচেয়ে প্রথমে MySQL-এর ভার্সন চেক করতে হবে। এটি নিচের কোয়েরি দিয়ে করা যায়:
mysql> SELECT VERSION(); +-----------+ | VERSION() | +-----------+ | 5.7.20 | +-----------+ 1 row in set (0.10 sec)
বর্তমান ইউজারের প্রিভিলেজ
আসলে, CREATE PROCEDURE এবং CREATE FUNCTION CREATE ROUTINE প্রিভিলেজ আপেক্ষা করে। ডিফল্টভাবে, MySQL অটোমেটিক্যালি রুটিন ক্রিয়েটরের জন্য ALTER ROUTINE এবং EXECUTE প্রিভিলেজ দেয়। এই আচরণ automatic_sp_privileges সিস্টেম ভেরিয়েবল ডিজেবল করলে বদলানো যায়। বর্তমান ইউজারের প্রিভিলেজ নিচের কোয়েরি দিয়ে চেক করা যায়:
mysql> SHOW PRIVILEGES
ডাটাবেস সিলেক্ট করা
প্রোসিজার তৈরির আগে উপলব্ধ ডাটাবেসগুলো থেকে একটি ডাটাবেস সিলেক্ট করতে হবে। এটি নিচের কোয়েরি দিয়ে করা যায়:
mysql> USE query; Database changed
উপরোক্ত কোয়েরি থেকে স্পষ্ট যে আমরা 'query' নামক ডাটাবেস ব্যবহার করছি।
DELIMITER নির্বাচন করা
ডিলিমিটার হলো স্ট্রিং বা ক্যারেক্টার যা একটি SQL স্টেটমেন্ট সম্পূর্ণ করতে ব্যবহৃত হয়। ডিফল্টভাবে আমরা সেমিকোলন (;) ব্যবহার করি ডিলিমিটার হিসেবে। কিন্তু এটি স্টোরড প্রোসিজারে সমস্যা সৃষ্টি করে কারণ একটি প্রোসিজারে অনেক স্টেটমেন্ট থাকতে পারে এবং সবই সেমিকোলন দিয়ে শেষ হতে হবে। তাই আপনার ডিলিমিটার হিসেবে এমন একটি স্ট্রিং নির্বাচন করুন যা স্টেটমেন্ট বা প্রোসিজারের ভিতরে কমই ব্যবহৃত হয়। আমরা ডবল ব্যাকস্ল্যাশ // বা ডবল ডলার সাইন $$ বা অন্য যেকোনো ডিলিমিটার নির্বাচন করতে পারি। এটি নিচের কোয়েরি দিয়ে করা যায়:
mysql> DELIMITER // ;
এখন, ডিফল্ট ডিলিমিটার // চিহ্নে পরিবর্তন হয়েছে এবং এটি নিচের কোয়েরি দিয়ে চেক করা যায়:
mysql> SELECT * FROM student_info // +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 100 | Aarav | Delhi | Computers | | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Jaipur | Literature | | 110 | Rahul | Chandigarh | History | +------+---------+------------+------------+ 4 rows in set (0.00 sec)