Stored Procedure (SP) SQL-এ একটি প্রি-কম্পাইলড কোড ব্লক যা ডেটাবেসে সংরক্ষিত থাকে এবং প্রয়োজন অনুযায়ী একাধিক বার এক্সিকিউট করা যেতে পারে। Stored Procedures ডেটাবেস অ্যাপ্লিকেশনের কার্যকারিতা উন্নত করতে সাহায্য করে এবং কোড পুনরায় ব্যবহারযোগ্য (reusable) ও আরও সহজভাবে রক্ষণাবেক্ষণযোগ্য করে তোলে।
Stored Procedure সাধারণত একটি নির্দিষ্ট কাজ সম্পাদন করার জন্য তৈরি করা হয়, যেমন ডেটা ইনসার্ট করা, আপডেট করা, বা ডিলিট করা, অথবা কনপ্লেক্স ডেটা প্রসেসিং।
Stored Procedure তৈরি (Create) করা
SQL-এ Stored Procedure তৈরি করতে CREATE PROCEDURE কমান্ড ব্যবহার করা হয়। এর মাধ্যমে আপনি SQL কোডের একটি ব্লক তৈরি করতে পারেন যা নির্দিষ্ট ইনপুট প্যারামিটার গ্রহণ করে এবং তা প্রসেস করার পরে আউটপুট প্রদান করে।
Stored Procedure এর সিনট্যাক্স:
CREATE PROCEDURE procedure_name
(parameter1 datatype, parameter2 datatype, ...)
BEGIN
-- SQL statements go here
SQL statement;
SQL statement;
END;
উদাহরণ 1: Simple Stored Procedure
ধরা যাক, আপনি একটি employees টেবিল থেকে একটি নির্দিষ্ট কর্মচারীকে খুঁজে বের করতে চান, যেখানে তার employee_id প্যারামিটার হিসেবে পাস করা হবে।
CREATE PROCEDURE GetEmployeeDetails (IN emp_id INT)
BEGIN
SELECT * FROM employees WHERE employee_id = emp_id;
END;
এখানে:
IN emp_id INTহল ইনপুট প্যারামিটার, যার মাধ্যমে আপনিemployee_idএর মান পাস করতে পারবেন।SELECT * FROM employees WHERE employee_id = emp_id;হল SQL কোড যা প্যারামিটার হিসেবে পাস করাemp_idঅনুযায়ীemployeesটেবিল থেকে ডেটা রিটার্ন করবে।
Stored Procedure Execute (চালানো)
একবার Stored Procedure তৈরি হলে, সেটি CALL কমান্ড দিয়ে এক্সিকিউট করা যেতে পারে। আপনি যখন এক্সিকিউট করবেন, তখন ইনপুট প্যারামিটার পাস করতে হবে (যদি থাকে)।
Stored Procedure Execute করার সিনট্যাক্স:
CALL procedure_name(parameter1_value, parameter2_value, ...);
উদাহরণ 2: Stored Procedure Execute করা
উপরের উদাহরণে তৈরি করা GetEmployeeDetails Stored Procedure এক্সিকিউট করতে:
CALL GetEmployeeDetails(101);
এটি employee_id = 101 এর জন্য employees টেবিল থেকে কর্মচারীর সমস্ত ডেটা রিটার্ন করবে।
Stored Procedure-এর অন্যান্য বৈশিষ্ট্য
- Out Parameters: আপনি Stored Procedure-এ আউটপুট প্যারামিটার ব্যবহার করতে পারেন, যা প্রক্রিয়াটি সম্পন্ন হওয়ার পরে একটি মান ফেরত দেয়। উদাহরণস্বরূপ, একটি গণনা করা মান ফেরত দেওয়া।
- Error Handling: SQL Stored Procedure-এ ত্রুটি ব্যবস্থাপনা (error handling) ব্যবহার করা যেতে পারে। এর মাধ্যমে আপনি যদি কোন ত্রুটি পান, তবে এটি অ্যাপ্লিকেশনকে একটি নির্দিষ্ট ত্রুটি বার্তা দিতে পারে।
- Control Flow: Stored Procedure-এ IF, LOOP, এবং CASE স্টেটমেন্টের মতো কন্ট্রোল ফ্লো স্টেটমেন্ট ব্যবহার করা যেতে পারে, যা জটিল লজিক প্রয়োগ করতে সাহায্য করে।
উদাহরণ 3: Out Parameter সহ Stored Procedure
ধরা যাক, আপনি একটি Stored Procedure তৈরি করতে চান যা একটি কর্মচারীর বেতন (salary) আপডেট করবে এবং নতুন বেতন ফেরত দেবে।
CREATE PROCEDURE UpdateEmployeeSalary (IN emp_id INT, IN new_salary DECIMAL(10,2), OUT updated_salary DECIMAL(10,2))
BEGIN
UPDATE employees
SET salary = new_salary
WHERE employee_id = emp_id;
-- Return the updated salary
SELECT salary INTO updated_salary FROM employees WHERE employee_id = emp_id;
END;
এখানে:
IN emp_id INT, IN new_salary DECIMAL(10,2)ইনপুট প্যারামিটার।OUT updated_salary DECIMAL(10,2)আউটপুট প্যারামিটার, যা কর্মচারীর আপডেট হওয়া বেতন রিটার্ন করবে।
Execute করা:
CALL UpdateEmployeeSalary(101, 50000, @salary);
SELECT @salary AS UpdatedSalary;
এটি employee_id = 101 এর জন্য বেতন আপডেট করবে এবং নতুন বেতনটি @salary ভ্যারিয়েবলে সংরক্ষণ করবে, এরপর SELECT দ্বারা সেই নতুন বেতন প্রদর্শন করবে।
Stored Procedure ব্যবহারের সুবিধা:
- কোড পুনরায় ব্যবহারযোগ্য: একবার Stored Procedure তৈরি হলে, আপনি তা বিভিন্ন জায়গায় ব্যবহার করতে পারেন, যা কোড পুনরায় ব্যবহারযোগ্যতা বৃদ্ধি করে।
- পারফরমেন্স উন্নতি: Stored Procedures প্রি-কম্পাইলড এবং অপ্টিমাইজড হওয়ায় এগুলি দ্রুত রান করে।
- নিরাপত্তা: আপনার ডেটাবেসে সরাসরি SQL কোড না লিখে, নির্দিষ্ট Stored Procedures ব্যবহার করলে নিরাপত্তা বৃদ্ধি পায়।
- ডেটাবেস লজিক সংরক্ষণ: অ্যাপ্লিকেশন লেভেলে কোডের পরিবর্তে ডেটাবেস লজিক এবং কাজ সংরক্ষণ করা সহজ হয়।
উপসংহার:
SQL-এর Stored Procedure ডেটাবেস অ্যাপ্লিকেশন উন্নত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি কোড পুনরায় ব্যবহারযোগ্য, দ্রুত কার্যকরী এবং নিরাপদ উপায় হিসেবে কাজ করে।
Read more