মারিয়া ডিবি (MariaDB)-তে Stored Procedure হলো একটি প্রি-কম্পাইলড SQL কোডের স্যুট, যা একাধিক SQL স্টেটমেন্ট একত্রে সম্পাদন করার জন্য ব্যবহৃত হয়। একবার স্টোরড প্রসিডিওর তৈরি হয়ে গেলে, আপনি এটি বার বার কল করতে পারেন, যা কোডের পুনরাবৃত্তি এড়াতে এবং কর্মক্ষমতা বাড়াতে সহায়তা করে।
Stored Procedure তৈরি করা
Stored Procedure তৈরি করতে CREATE PROCEDURE স্টেটমেন্ট ব্যবহার করা হয়। এর মাধ্যমে একটি নতুন প্রসিডিওর ডিফাইন করা হয়, যাতে একটি নির্দিষ্ট কাজ সম্পাদন করার জন্য একাধিক SQL স্টেটমেন্ট অন্তর্ভুক্ত থাকে।
Stored Procedure তৈরি করার সাধারণ সিনট্যাক্স:
CREATE PROCEDURE procedure_name (parameter_list)
BEGIN
SQL_statement_1;
SQL_statement_2;
...
END;
- procedure_name: স্টোরড প্রসিডিওরের নাম।
- parameter_list: আর্গুমেন্ট বা প্যারামিটার (যদি থাকে), যেগুলো ইনপুট বা আউটপুট হিসেবে প্রসিডিওরকে পাস করা হবে।
- SQL_statement_1, SQL_statement_2: একাধিক SQL স্টেটমেন্ট যা একে অপরের সাথে যুক্ত হয়ে কার্যকর হবে।
Stored Procedure তৈরি করার উদাহরণ
ধরা যাক, আমরা একটি employees টেবিল তৈরি করেছি, এবং আমরা একটি Stored Procedure তৈরি করতে চাই যা একটি নির্দিষ্ট department_id অনুসারে কর্মচারীদের নাম এবং তাদের বেতন দেখাবে।
১. employees টেবিল তৈরি করা:
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100),
department_id INT,
salary DECIMAL(10, 2)
);
২. Stored Procedure তৈরি করা:
CREATE PROCEDURE GetEmployeesByDepartment (IN dept_id INT)
BEGIN
SELECT name, salary
FROM employees
WHERE department_id = dept_id;
END;
এখানে:
GetEmployeesByDepartmentহল Stored Procedure এর নাম।dept_idএকটি ইনপুট প্যারামিটার, যার মাধ্যমে নির্দিষ্ট ডিপার্টমেন্টের কর্মচারীদের তথ্য বের করা হবে।SELECTস্টেটমেন্ট দিয়ে সংশ্লিষ্ট ডিপার্টমেন্টের কর্মচারীদের নাম এবং বেতন দেখানো হবে।
Stored Procedure কল করা
Stored Procedure কল করতে CALL স্টেটমেন্ট ব্যবহার করা হয়। যখন আপনি প্রসিডিওরটি কল করবেন, তখন আপনি আর্গুমেন্ট হিসেবে প্যারামিটার প্রদান করতে পারেন (যদি থাকে)।
উদাহরণ:
CALL GetEmployeesByDepartment(2);
এই কুয়েরিটি department_id = 2 এর জন্য কর্মচারীদের নাম এবং বেতন দেখাবে।
Stored Procedure তে আউটপুট প্যারামিটার ব্যবহার
আপনি আউটপুট প্যারামিটার ব্যবহার করে কোনও মান ফিরিয়ে দিতে পারেন। এতে, প্রসিডিওরটি একটি মান ক্যালকুলেট করে এবং সেই মানটি কল করা জায়গায় পাঠানো হয়।
উদাহরণ: আউটপুট প্যারামিটারসহ Stored Procedure
ধরা যাক, আপনি একটি Stored Procedure তৈরি করতে চান যা একটি নির্দিষ্ট department_id এর জন্য মোট বেতন পরিমাণ বের করবে।
CREATE PROCEDURE GetTotalSalaryByDepartment (IN dept_id INT, OUT total_salary DECIMAL(10, 2))
BEGIN
SELECT SUM(salary) INTO total_salary
FROM employees
WHERE department_id = dept_id;
END;
এখানে:
dept_idএকটি ইনপুট প্যারামিটার, যা আপনাকে নির্দিষ্ট ডিপার্টমেন্ট নির্বাচন করতে সাহায্য করবে।total_salaryএকটি আউটপুট প্যারামিটার, যা নির্দিষ্ট ডিপার্টমেন্টের মোট বেতন পরিমাণ ধারণ করবে।
Stored Procedure কল করা এবং আউটপুট পাওয়া:
-- আউটপুট প্যারামিটারটি একটি ভ্যারিয়েবল হিসেবে সংরক্ষণ করা
SET @total_salary = 0;
-- Stored Procedure কল করা
CALL GetTotalSalaryByDepartment(2, @total_salary);
-- আউটপুট দেখানো
SELECT @total_salary;
এখানে, GetTotalSalaryByDepartment Stored Procedure-টি কল করা হয়েছে এবং আউটপুট প্যারামিটার @total_salary-এ মোট বেতন পরিমাণ সংরক্ষণ করা হয়েছে। পরবর্তীতে SELECT স্টেটমেন্টের মাধ্যমে এই মান দেখানো হয়েছে।
Stored Procedure এর সুবিধা
- কোড পুনরাবৃত্তি কমানো: একাধিক স্থানে একই কোডের পরিবর্তে একটি স্টোরড প্রসিডিওর ব্যবহার করলে কোড পুনরাবৃত্তি কমানো যায়।
- কর্মক্ষমতা উন্নতি: স্টোরড প্রসিডিওর সাধারণত একবার কম্পাইল হয় এবং ডেটাবেস সার্ভারে সঞ্চিত থাকে, তাই একে একাধিকবার কল করার মাধ্যমে কর্মক্ষমতা বৃদ্ধি পায়।
- ডেটাবেস নিরাপত্তা: স্টোরড প্রসিডিওরের মাধ্যমে নির্দিষ্ট কাজ বা ডেটার প্রতি অ্যাক্সেস সীমিত করা সম্ভব, কারণ আপনি প্যারামিটার নির্দিষ্ট করে কল করতে পারেন।
সারাংশ
মারিয়া ডিবি (MariaDB)-তে Stored Procedure ডেটাবেসে একাধিক SQL স্টেটমেন্ট একত্রে সম্পাদন করার জন্য ব্যবহৃত হয়। এটি কোডের পুনরাবৃত্তি কমায়, কর্মক্ষমতা উন্নত করে এবং ডেটাবেসের নিরাপত্তা নিশ্চিত করতে সহায়তা করে। Stored Procedure তৈরি করতে CREATE PROCEDURE এবং কল করতে CALL স্টেটমেন্ট ব্যবহার করা হয়। এটি ইনপুট ও আউটপুট প্যারামিটার সমর্থন করে, যার মাধ্যমে ডেটা পরিচালনা করা সহজ হয়।
Read more