স্টোরড প্রসিডিউরের ভেতরে `SELECT` স্টেটমেন্ট রাখলে প্রসিডিউর কল করলে সেটি রেজাল্ট সেট রিটার্ন করে। এটি অ্যাপ্লিকেশন লেয়ারে একই কোয়েরি বারবার লিখতে হবে না।
টেবিল ও ডেটা তৈরি
mysql> CREATE TABLE DemoTable1933 (ClientName VARCHAR(20));
mysql> INSERT INTO DemoTable1933 VALUES
('Chris Brown'), ('David Miller'), ('Adam Smith'), ('John Doe');
স্টোরড প্রসিডিউর তৈরি
mysql> DELIMITER //
mysql> CREATE PROCEDURE display_all_records()
BEGIN
SELECT * FROM DemoTable1933;
END //
mysql> DELIMITER ;
প্রসিডিউর কল করা
mysql> CALL display_all_records();
আউটপুট:
+--------------+ | ClientName | +--------------+ | Chris Brown | | David Miller | | Adam Smith | | John Doe | +--------------+ 4 rows in set (0.00 sec)
প্রসিডিউর ড্রপ/মডিফাই
DROP PROCEDURE IF EXISTS display_all_records;
প্যারামিটার সহ প্রসিডিউর (বিকল্প)
CREATE PROCEDURE get_clients_by_name(IN name_prefix VARCHAR(20))
BEGIN
SELECT * FROM DemoTable1933 WHERE ClientName LIKE CONCAT(name_prefix, '%');
END;
সুবিধা
- লজিক ডাটাবেস লেয়ারে ক্যাপসুলেটেড থাকে।
- নিরাপত্তা: টেবিলে ডায়রেক্ট এক্সেস না দিয়ে প্রসিডিউর দিয়ে এক্সেস দেয়া যায়।
- রিঅюзаবিলিটি: একাধিক অ্যাপ্লিকেশন থেকে কল করা যায়।
সতর্কতা
- প্রসিডিউর ডিবাগ করা কঠিন।
- অতিরিক্ত লজিক (লুপ, কার্সর) পারফরম্যান্স কমাতে পারে।
- ভার্সন কন্ট্রোল এবং ডিপ্লয়মেন্ট ম্যানেজমেন্ট জটিল।