SQL Functions এবং Stored Procedures হল SQL এর দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ডেটাবেসের কার্যকারিতা ও পুনঃব্যবহারযোগ্যতা বাড়াতে সহায়তা করে। যদিও উভয়ই SQL কোডের পুনঃব্যবহারযোগ্য ব্লক হিসেবে কাজ করে, তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে।
1. SQL Functions (SQL ফাংশন)
SQL Functions হল প্রোগ্রামেবল কোড ব্লক যা এক বা একাধিক ইনপুট প্যারামিটার নিয়ে কিছু নির্দিষ্ট কাজ সম্পাদন করে এবং একটি মান (Value) রিটার্ন করে। ফাংশন সাধারণত ডেটাবেসে কিছু গণনা বা ডেটা প্রসেসিং করতে ব্যবহৃত হয়।
SQL ফাংশনের বৈশিষ্ট্য:
- ইনপুট প্যারামিটার: ফাংশন এক বা একাধিক ইনপুট প্যারামিটার নিতে পারে।
- রিটার্ন ভ্যালু: একটি ফাংশন অবশ্যই একটি মান রিটার্ন করে।
- এটি SELECT স্টেটমেন্টে ব্যবহার করা যায়: ফাংশনকে SQL SELECT স্টেটমেন্টে কল করা যেতে পারে, যেমন
SELECTকুয়েরির মধ্যে।
ফাংশনের উদাহরণ:
1. ন্যূনতম বয়স বের করার ফাংশন:
ধরা যাক, আমাদের একটি employees টেবিল আছে যেখানে কর্মচারীদের বয়স সংরক্ষিত আছে, এবং আমরা একটি ফাংশন লিখতে চাই যা কর্মচারীর বয়সের গড় বের করবে।
CREATE FUNCTION get_average_age()
RETURNS DECIMAL(5,2)
BEGIN
DECLARE avg_age DECIMAL(5,2);
SELECT AVG(age) INTO avg_age FROM employees;
RETURN avg_age;
END;
এখানে:
AVG(age)হলো একটি অ্যাগ্রিগেট ফাংশন, যা গড় বয়স হিসাব করে।RETURNS DECIMAL(5,2)ফাংশনের রিটার্ন টাইপ ঘোষণা করছে।
2. টেক্সটের দৈর্ঘ্য হিসাব করা ফাংশন:
CREATE FUNCTION get_text_length(text_value VARCHAR(255))
RETURNS INT
BEGIN
RETURN LENGTH(text_value);
END;
এটি টেক্সটের দৈর্ঘ্য রিটার্ন করে, যা SQL-এ সাধারণত LENGTH() ফাংশনের মাধ্যমে করা হয়।
2. Stored Procedures (Stored Procedures)
Stored Procedures হল একটি প্রোগ্রামেবল কোড ব্লক যা SQL কমান্ডের একাধিক স্টেটমেন্ট নিয়ে গঠিত। এটি সাধারণত নির্দিষ্ট কার্যক্রম সম্পাদন করার জন্য তৈরি হয়, যেমন ডেটা ইন্সার্ট করা, আপডেট করা বা ডিলিট করা। Stored Procedure এক বা একাধিক SQL স্টেটমেন্টের একটি গ্রুপ হিসাবে কাজ করে, এবং এটি ফাংশনের তুলনায় সাধারণত বেশি জটিল হয়।
Stored Procedure এর বৈশিষ্ট্য:
- ইনপুট এবং আউটপুট প্যারামিটার: Stored Procedures ইনপুট প্যারামিটার নিতে পারে এবং আউটপুট প্যারামিটার বা রিটার্ন ভ্যালু সরবরাহ করতে পারে।
- মাল্টিপল স্টেটমেন্ট: এটি একাধিক SQL স্টেটমেন্টে একযোগে কাজ করতে পারে।
- পুনঃব্যবহারযোগ্য: একটি Stored Procedure একাধিক জায়গায় ব্যবহার করা যেতে পারে।
- এটি SELECT স্টেটমেন্টের মধ্যে ব্যবহার করা যায় না: Stored Procedure এর মধ্যে থাকা SQL স্টেটমেন্টগুলো একসাথে সম্পাদিত হয়, কিন্তু
SELECTকুয়েরিতে সরাসরি ব্যবহৃত হতে পারে না।
Stored Procedure এর উদাহরণ:
1. কর্মচারীর বেতন আপডেট করার Stored Procedure:
CREATE PROCEDURE update_employee_salary(IN emp_id INT, IN new_salary DECIMAL(10,2))
BEGIN
UPDATE employees
SET salary = new_salary
WHERE id = emp_id;
END;
এখানে:
IN emp_id INT: ইনপুট প্যারামিটার, যা কর্মচারীর আইডি নেয়।IN new_salary DECIMAL(10,2): ইনপুট প্যারামিটার, যা নতুন বেতন নেয়।UPDATE employees SET salary = new_salary WHERE id = emp_id;: এটি SQL কমান্ড যা টেবিলemployeesএর নির্দিষ্ট কর্মচারীর বেতন আপডেট করে।
এই Stored Procedure টিকে আমরা পরবর্তীতে কল করতে পারি, যেমন:
CALL update_employee_salary(101, 50000.00);
এখানে CALL কাওয়ারি দিয়ে আমরা stored procedure কল করছি এবং প্রয়োজনীয় ইনপুট প্যারামিটার সরবরাহ করছি।
Joins এবং Subqueries এর সাথে SQL Functions এবং Stored Procedures এর তুলনা
| বিষয় | SQL Functions | Stored Procedures |
|---|---|---|
| কাজ | একক মান রিটার্ন করে | একাধিক SQL স্টেটমেন্ট একত্রে কার্যকর করে |
| রিটার্ন | একটি ভ্যালু রিটার্ন করে (Scalar, String, Date ইত্যাদি) | সাধারণত কোনো রিটার্ন ভ্যালু থাকে না, তবে আউটপুট প্যারামিটার থাকে |
| ব্যবহার | SELECT, WHERE, ORDER BY ইত্যাদির মধ্যে ব্যবহার করা যায় | SQL কমান্ডগুলোকে ব্লক হিসেবে একত্রে কার্যকর করতে ব্যবহৃত হয় |
| স্টোর করা যায় | হ্যাঁ, ডেটাবেসে সংরক্ষিত থাকে | হ্যাঁ, ডেটাবেসে সংরক্ষিত থাকে |
| জটিলতা | সাধারণত সহজ, একক কাজ করে | বেশ জটিল এবং বিভিন্ন SQL স্টেটমেন্ট একসাথে কার্যকর করে |
উপসংহার
- SQL Functions সাধারণত একটি নির্দিষ্ট কাজের জন্য ব্যবহৃত হয় এবং একটি মান রিটার্ন করে।
- Stored Procedures সাধারণত একটি অথবা একাধিক SQL স্টেটমেন্টের সমন্বয়ে তৈরি হয় এবং বেশি জটিল কার্যক্রম সম্পাদন করতে ব্যবহৃত হয়।
এই দুটি পদ্ধতির মধ্যে নির্বাচন করা হয় আপনার প্রয়োজন অনুযায়ী—যদি আপনি একটি নির্দিষ্ট মান চান তবে ফাংশন, এবং যদি একাধিক কার্যক্রম পরিচালনা করতে চান তবে স্টোরড প্রোসিডিউর ব্যবহার করতে পারেন।
SQL Functions হল প্রস্তুত করা ফাংশন বা প্রক্রিয়া যা ডেটাবেসে থাকা ডেটার উপর নির্দিষ্ট কার্যক্রম সম্পাদন করে। SQL ফাংশনগুলি সাধারণত ডেটা ম্যানিপুলেশন, গণনা, বা আউটপুট পরিবর্তন করার জন্য ব্যবহৃত হয়। এগুলি ব্যবহার করে আপনি সহজে বিভিন্ন ধরনের গণনা, সাঁঝ, ফিল্টার এবং বিভিন্ন ডেটা ট্রান্সফরমেশন করতে পারেন।
SQL Functions-এর প্রধান শ্রেণীসমূহ:
- Aggregate Functions
এই ফাংশনগুলি একাধিক রেকর্ডে গণনা বা গোষ্ঠীভূত ডেটা পরিচালনা করতে ব্যবহৃত হয়। উদাহরণস্বরূপ,SUM(),AVG(),COUNT(),MAX(), এবংMIN()।উদাহরণ:
SELECT COUNT(*) FROM employees;
- Scalar Functions
Scalar functions হল এমন ফাংশন যা একটি একক মান প্রদান করে এবং একক কলামের মান পরিবর্তন করতে ব্যবহৃত হয়। যেমনUPPER(),LOWER(),ROUND(),CONCAT()ইত্যাদি।উদাহরণ:
SELECT UPPER(name) FROM employees;
- String Functions
স্ট্রিং সম্পর্কিত বিভিন্ন কার্যক্রম সম্পাদন করার জন্য ব্যবহৃত হয়। যেমন,CONCAT(),LENGTH(),SUBSTRING(),REPLACE()ইত্যাদি।উদাহরণ:
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
- Date and Time Functions
এই ফাংশনগুলি তারিখ এবং সময়ের উপর কাজ করে। যেমনNOW(),DATE(),DATEDIFF(),YEAR(),MONTH()ইত্যাদি।উদাহরণ:
SELECT YEAR(order_date) FROM orders;
- Mathematical Functions
এই ফাংশনগুলি গাণিতিক গণনা বা ট্রান্সফরমেশন সম্পাদন করতে ব্যবহৃত হয়। যেমনROUND(),CEIL(),FLOOR(),ABS()ইত্যাদি।উদাহরণ:
SELECT ROUND(price, 2) FROM products;
SQL Functions কেন ব্যবহার করা হয়?
- ডেটার উপর গণনা করা
Aggregate functions এবং mathematical functions ব্যবহার করে ডেটা সেটের উপর গণনা করা সম্ভব, যেমন গড়, মোট, সর্বোচ্চ বা সর্বনিম্ন মান বের করা। - স্ট্রিং এবং ডেটা ট্রান্সফরমেশন
String এবং Date functions ব্যবহার করে স্ট্রিংয়ের আকৃতি পরিবর্তন বা তারিখের গণনা করা সহজ হয়। যেমন, নামের বড় হাতের অক্ষর ছোট করা, বা তারিখের মান পরিবর্তন করা। - ডেটার ফিল্টারিং এবং মান চেক করা
SQL Functions ব্যবহার করে ডেটাবেস থেকে নির্দিষ্ট মান বের করতে, ফিল্টার করতে এবং সিদ্ধান্ত নিতে সহায়তা পাওয়া যায়। - কোড সহজ এবং সংক্ষিপ্ত করা
ফাংশন ব্যবহার করলে SQL কিউরি আরও সংক্ষিপ্ত এবং সুসংগঠিত হয়, যা কোড লেখাকে সহজ করে তোলে।
SQL Functions ডেটাবেসের কাজকর্মকে আরও কার্যকর এবং দ্রুত করে তোলে, এবং আপনি যদি ডেটাবেসের সাথে জটিল কাজ করতে চান, তাহলে এগুলি অপরিহার্য।
SQL-এ Scalar Functions এবং Aggregate Functions দুটি আলাদা ধরনের ফাংশন যা ডেটাবেসের উপর নির্দিষ্ট ধরনের অপারেশন বা গণনা সম্পাদন করে। এই ফাংশনগুলি SQL কুয়েরি লেখার সময় ব্যবহারকারীর চাহিদা অনুযায়ী ডেটার ওপর বিভিন্ন ধরণের গণনা এবং ফিল্টারিং কার্যক্রম সম্পাদন করতে সাহায্য করে।
1. Scalar Functions
Scalar Functions হল সেই ধরনের ফাংশন যেগুলি একক মান (single value) রিটার্ন করে এবং সাধারণত একক কলাম বা রেকর্ডের ওপর কাজ করে। এগুলি মূলত একক রেকর্ড বা একক ভ্যালুর উপর গণনা করার জন্য ব্যবহৃত হয়।
Scalar Functions কাস্টম তৈরি করার জন্য SQL Server (T-SQL) বা MySQL (Stored Functions) তে User Defined Functions (UDF) ব্যবহার করা যেতে পারে।
Scalar Function তৈরি করা (SQL Server)
SQL Server-এ Scalar Function তৈরি করতে নিম্নলিখিত সিনট্যাক্স ব্যবহার করা হয়:
CREATE FUNCTION function_name (parameters)
RETURNS data_type
AS
BEGIN
-- Function Logic
RETURN (expression)
END;
উদাহরণ: ধরা যাক, আমরা একটি scalar function তৈরি করতে চাই যা দুইটি সংখ্যার যোগফল প্রদান করবে:
CREATE FUNCTION AddNumbers (@num1 INT, @num2 INT)
RETURNS INT
AS
BEGIN
RETURN (@num1 + @num2)
END;
এখন, এই ফাংশনটি ব্যবহার করা যেতে পারে:
SELECT dbo.AddNumbers(5, 10);
এটি ১৫ প্রদান করবে।
2. Aggregate Functions
Aggregate Functions হল সেই ধরনের ফাংশন যেগুলি একাধিক রেকর্ডের উপর গণনা বা সাঙ্গন (aggregation) সম্পাদন করে এবং একটি একক মান রিটার্ন করে। এগুলি সাধারণত GROUP BY ক্লজের সাথে ব্যবহৃত হয়, যা ডেটাকে গ্রুপ করে এবং তারপর বিভিন্ন ফাংশন যেমন COUNT(), SUM(), AVG(), MIN(), MAX() ইত্যাদি প্রযোজ্য হয়।
Aggregate Function তৈরি করা (SQL Server)
SQL Server-এ User Defined Aggregate Function (UDAF) তৈরি করা একটু বেশি জটিল হতে পারে, কারণ এটি নির্দিষ্ট ধরণের ডেটা রোলিং বা কমপ্লেক্স অগমেন্টেশন করতে পারে। তবে সাধারণত প্রাথমিক ফাংশনগুলি যেমন SUM(), COUNT(), AVG() ইত্যাদি এক্সটেন্ডেড ফাংশন হিসেবে ব্যবহৃত হয়।
এছাড়া, Stored Procedure বা Triggers ব্যবহার করে complex aggregation নির্ধারণ করা যেতে পারে।
উদাহরণ:
ধরা যাক, আমরা একটি Custom Aggregate Function তৈরি করতে চাই, যেটি একটি কলামে সর্বোচ্চ মূল্য বের করবে:
CREATE FUNCTION MaxPrice (@price1 INT, @price2 INT)
RETURNS INT
AS
BEGIN
IF @price1 > @price2
RETURN @price1
ELSE
RETURN @price2
END;
এখন, আপনি এটি Aggregate ফাংশন হিসেবে ব্যবহার করতে পারেন যখন আপনি গ্রুপ করা ডেটার মধ্যে সর্বোচ্চ মূল্য চান।
SELECT MAX(dbo.MaxPrice(price1, price2)) AS HighestPrice
FROM products;
এটি products টেবিলের মধ্যে price1 এবং price2 কলামের সর্বোচ্চ মূল্য প্রদর্শন করবে।
Scalar এবং Aggregate Functions এর মধ্যে পার্থক্য
- Scalar Functions একক মান রিটার্ন করে (একক রেকর্ড বা একক কলাম) এবং সাধারণত একটি নির্দিষ্ট রেকর্ডের উপরে কাজ করে।
- Aggregate Functions একাধিক রেকর্ডের উপরে কাজ করে এবং একটি একক সারাংশ (summary) বা গাণিতিক ফলাফল (যেমন, গড়, যোগফল, সর্বোচ্চ মান) প্রদান করে।
উপসংহার
- Scalar Functions সাধারণত নির্দিষ্ট রেকর্ডের উপর গণনা করতে ব্যবহৃত হয় এবং এটি সাধারণত একক কলাম বা একটি রেকর্ড নিয়ে কাজ করে।
- Aggregate Functions সাধারণত একাধিক রেকর্ডের উপর গণনা করতে ব্যবহৃত হয় এবং এটি গ্রুপিং বা সারাংশ হিসেবেও কাজ করতে পারে।
SQL তে Scalar এবং Aggregate Functions কাস্টম তৈরি করে বিভিন্ন ধরনের জটিল ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণের কাজ করা যায়, যা ডেটাবেস অপারেশনকে আরও কার্যকর এবং নমনীয় করে তোলে।
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 ডেটাবেস অ্যাপ্লিকেশন উন্নত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি কোড পুনরায় ব্যবহারযোগ্য, দ্রুত কার্যকরী এবং নিরাপদ উপায় হিসেবে কাজ করে।
Stored Procedure হলো একটি প্রি-ডিফাইন্ড SQL কুয়েরি বা কন্ট্রোল ফ্লো প্রোগ্রাম যা ডেটাবেস সার্ভারে সংরক্ষিত থাকে এবং একাধিক SQL স্টেটমেন্টের সমন্বয়ে কাজ করতে পারে। স্টোরড প্রোসিজারগুলি পুনঃব্যবহারযোগ্য কোড হিসেবে কাজ করে, এবং তারা খুবই কার্যকরী যখন একই ধরনের কাজ অনেকবার করা হয়, যেমন ডেটা ইনসার্ট, আপডেট, বা ডিলিট করা।
Input Parameters এবং Output Parameters হল দুটি গুরুত্বপূর্ণ ধারণা যা Stored Procedure-এ ব্যবহৃত হয়।
1. Input Parameters:
Input Parameters হল এমন প্যারামিটার যা Stored Procedure-এ পাস করা হয় যখন স্টোরড প্রোসিজারটি কল করা হয়। এই প্যারামিটারগুলো Stored Procedure এর মধ্যে ব্যবহৃত মান বা ডেটা সরবরাহ করে। Input Parameters ব্যবহার করে আপনি স্টোরড প্রোসিজারের মধ্যে ডাইনামিকভাবে ডেটা প্রক্রিয়াকরণ করতে পারেন।
Input Parameters উদাহরণ:
ধরা যাক, আপনি একটি add_employee নামের স্টোরড প্রোসিজার তৈরি করতে চান, যা নতুন কর্মচারী যোগ করবে। এই প্রোসিজারে কর্মচারীর নাম, বয়স, এবং বেতন ইনপুট হিসেবে পাস করা হবে।
DELIMITER
DELIMITER ;
এখানে:
emp_name,emp_age, এবংemp_salaryহল Input Parameters।INকীওয়ার্ডটি নির্দেশ করে যে এগুলো ইনপুট প্যারামিটার।
আপনি এই Stored Procedure-টি কল করতে পারেন:
CALL add_employee('John Doe', 30, 50000.00);
এই কমান্ডটি John Doe নামের কর্মচারীকে ৩০ বছর বয়স এবং ৫০,০০০ বেতনে employees টেবিলে যোগ করবে।
2. Output Parameters:
Output Parameters হল এমন প্যারামিটার যা Stored Procedure-এর মধ্যে ফলাফল ফেরত দেয়। এগুলি সাধারণত প্রক্রিয়া শেষ হওয়ার পর স্টোরড প্রোসিজারের বাইরের জায়গায় মান ফেরত পাঠানোর জন্য ব্যবহৃত হয়। আপনি OUT কীওয়ার্ড ব্যবহার করে আউটপুট প্যারামিটারগুলো ডিফাইন করতে পারেন।
Output Parameters উদাহরণ:
ধরা যাক, আপনি একটি get_employee_salary নামের স্টোরড প্রোসিজার তৈরি করতে চান, যা একটি কর্মচারীর ID ইনপুট হিসেবে নেবে এবং কর্মচারীর বেতন আউটপুট হিসেবে ফিরিয়ে দেবে।
DELIMITER
DELIMITER ;
এখানে:
emp_idহল Input Parameter, যা কর্মচারীর ID গ্রহণ করে।emp_salaryহল Output Parameter, যা নির্বাচিত কর্মচারীর বেতন ফেরত পাঠায়।
এখন, আপনি এই Stored Procedure-টি কল করতে পারেন এবং আউটপুট প্যারামিটারটি ব্যবহার করতে পারেন:
CALL get_employee_salary(1, @salary);
SELECT @salary;
এখানে, @salary একটি ভেরিয়েবল যা get_employee_salary প্রোসিজারের আউটপুট হিসেবে বেতন ধারণ করবে, এবং পরে SELECT দিয়ে আপনি এটি দেখতে পারবেন।
3. Input এবং Output Parameters একসাথে ব্যবহার:
একটি Stored Procedure-এ Input এবং Output প্যারামিটার একসাথে ব্যবহার করা সম্ভব। এভাবে, আপনি ইনপুট প্রদান করতে পারবেন এবং স্টোরড প্রোসিজারটি প্রক্রিয়া শেষে আউটপুট ফেরত দিতে পারবে।
Input এবং Output Parameters একসাথে উদাহরণ:
ধরা যাক, আপনি একটি update_employee_salary নামের স্টোরড প্রোসিজার তৈরি করতে চান, যা কর্মচারীর ID এবং নতুন বেতন ইনপুট হিসেবে নিবে এবং সফলভাবে আপডেট হলে, সেটি আউটপুট হিসেবে "Success" বা "Failure" ফেরত দিবে।
DELIMITER
DELIMITER ;
এখানে:
emp_idএবংnew_salaryহল Input Parameters।result_messageহল Output Parameter, যা স্টোরড প্রোসিজারটির সফলতা বা ব্যর্থতার বার্তা প্রদান করবে।
আপনি এই Stored Procedure-টি কল করতে পারেন:
CALL update_employee_salary(1, 60000.00, @message);
SELECT @message;
এটি কর্মচারী ID ১-এর বেতন ৬০,০০০.০০ টাকা আপডেট করবে এবং আউটপুট হিসেবে "Success" বা "Failure" বার্তা ফেরত দেবে।
4. Benefits of Using Parameters in Stored Procedures:
- কোড পুনঃব্যবহারযোগ্যতা: Stored Procedures একবার তৈরি করে বারবার ব্যবহার করা যায়। ইনপুট প্যারামিটার দ্বারা বিভিন্ন মান দিয়ে একই প্রোসিজারটি চালানো সম্ভব।
- দক্ষতা এবং কার্যকারিতা: Stored Procedures দ্রুত কার্যকর হয়, কারণ ডেটাবেস সার্ভার স্টোরড প্রোসিজারটি একবার কম্পাইল করার পর বারবার চালাতে পারে।
- নিরাপত্তা: ইনপুট প্যারামিটার ব্যবহার করে আপনি ডেটাবেসে SQL ইনজেকশন আক্রমণ থেকে সুরক্ষা পেতে পারেন। কারণ প্যারামিটারাইজড কুয়েরি SQL ইনজেকশন অ্যাটাক এড়ায়।
- প্রবাহ নিয়ন্ত্রণ: Stored Procedures জটিল কাজগুলি সহজ করে এবং ডেটাবেসের কন্ট্রোল ফ্লো নির্ধারণে সহায়তা করে।
সংক্ষেপে, Input এবং Output Parameters ব্যবহার করে আপনি আপনার Stored Procedure-কে আরো নমনীয় এবং ডাইনামিক করতে পারেন, যা বিভিন্ন পরিস্থিতিতে বিভিন্ন ধরণের ডেটা প্রক্রিয়াকরণ করতে সক্ষম।
Read more