Stored Procedures হল পূর্বনির্ধারিত SQL কুয়েরি বা অপারেশনগুলোর একটি সেট, যা ডেটাবেসের ভিতরে সংরক্ষিত এবং পরিচালিত হয়। এগুলি একাধিক SQL কুয়েরি, শর্ত বা লজিকাল অপারেশন নিয়ে গঠিত, যেগুলি পূর্বে একবার সংজ্ঞায়িত করা হয় এবং পরে প্রয়োজনমতো একাধিক বার চালানো যায়। একটি Stored Procedure মূলত একটি নামকৃত SQL স্ক্রিপ্ট যা ডেটাবেস সার্ভারে রান করা হয়, এবং এটি ব্যবহারকারী বা অ্যাপ্লিকেশন দ্বারা কল করা যায়।
Stored Procedure সাধারণত একটি ডেটাবেসে সংরক্ষিত এবং পুনরায় ব্যবহারের জন্য তৈরি করা হয়, যার ফলে ডেটাবেস অ্যাপ্লিকেশনটি বেশি কার্যকরী এবং সহজ হয়।
Stored Procedure
ব্যবহার করতে পারে, যার ফলে কোডের পুনঃব্যবহারযোগ্যতা নিশ্চিত হয়।IF
, CASE
বা LOOP
) প্রয়োগ করা যায়, যা SQL কুয়েরি বা অপারেশনের মধ্যে আরও লজিক্যাল ও কাঠামোগত অপারেশনগুলো তৈরি করতে সাহায্য করে।ধরা যাক, আমাদের একটি employees টেবিল আছে এবং আমরা এই টেবিল থেকে নির্দিষ্ট department_id অনুসারে সমস্ত কর্মচারী (employees) ফেচ করতে চাই। এর জন্য একটি Stored Procedure তৈরি করা যায়।
CREATE PROCEDURE get_employees_by_department(IN dept_id INT)
LANGUAGE SQL
BEGIN
SELECT employee_id, first_name, last_name
FROM employees
WHERE department_id = dept_id;
END;
এই উদাহরণে, get_employees_by_department নামে একটি Stored Procedure তৈরি করা হয়েছে, যেটি dept_id
ইনপুট প্যারামিটার হিসেবে নেয় এবং employees
টেবিল থেকে সেই বিভাগের কর্মচারীদের তথ্য বের করে।
CALL get_employees_by_department(10);
এখানে, 10
হচ্ছে ইনপুট প্যারামিটার হিসেবে যে department_id
এর কর্মচারীদের তথ্য আমরা চাই।
IN, OUT, INOUT প্যারামিটার:
IN
), আউটপুট (OUT
), এবং ইনপুট/আউটপুট (INOUT
) প্যারামিটার ব্যবহার করা যায়।উদাহরণ:
CREATE PROCEDURE update_employee_salary(IN emp_id INT, OUT new_salary DECIMAL)
BEGIN
UPDATE employees SET salary = salary * 1.10 WHERE employee_id = emp_id;
SELECT salary INTO new_salary FROM employees WHERE employee_id = emp_id;
END;
Error Handling:
DECLARE CONTINUE HANDLER
দ্বারা করা যায়।উদাহরণ:
CREATE PROCEDURE safe_update_employee(IN emp_id INT, IN new_salary DECIMAL)
BEGIN
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
-- Handle error
ROLLBACK;
END;
UPDATE employees SET salary = new_salary WHERE employee_id = emp_id;
COMMIT;
END;
common.read_more