PL/SQL তে Stored Procedures এবং Functions হলো কোডের ব্লক যা ডেটাবেসের মধ্যে সংরক্ষিত থাকে এবং যেগুলো পুনঃব্যবহারযোগ্য। এগুলো সাধারণত ডেটাবেসে প্রক্রিয়া সম্পাদন করার জন্য ব্যবহৃত হয়, যেমন ডেটা আপডেট, ইনসার্ট, ডিলিট বা কোনো কমপ্লেক্স ক্যালকুলেশন। একটি Procedure কোন মান ফেরত দেয় না, কিন্তু একটি Function অবশ্যই একটি মান ফেরত দেয়।
এখানে Stored Procedures এবং Functions তৈরি এবং ব্যবহার করার উদাহরণ দেয়া হলো।
Stored Procedure
একটি Stored Procedure হল একটি PL/SQL ব্লক যা একাধিক SQL কমান্ডকে একত্রিত করে এবং ডেটাবেসে সংরক্ষিত থাকে। এটি ডেটাবেসের অন্যান্য অংশ বা অ্যাপ্লিকেশন থেকে কল করা যেতে পারে।
Procedure তৈরি করা
CREATE OR REPLACE PROCEDURE increase_salary (emp_id IN NUMBER, increase_percentage IN NUMBER)
IS
BEGIN
UPDATE employees
SET salary = salary + (salary * increase_percentage / 100)
WHERE employee_id = emp_id;
COMMIT;
DBMS_OUTPUT.PUT_LINE('Salary updated for Employee ID: ' || emp_id);
END increase_salary;
Explanation:
increase_salaryহল একটি procedure যেটি কর্মচারীর স্যালারি বৃদ্ধি করার জন্য ব্যবহার করা হয়।- এটি দুটি প্যারামিটার নেয়:
emp_id: কর্মচারীর আইডি যাদের স্যালারি আপডেট করতে হবে।increase_percentage: স্যালারি বৃদ্ধি শতাংশ।
UPDATEস্টেটমেন্টের মাধ্যমে কর্মচারীর স্যালারি আপডেট করা হয় এবং শেষেCOMMITকরা হয়।
Procedure কল করা
BEGIN
increase_salary(101, 10); -- Employee ID 101 এর স্যালারি 10% বৃদ্ধি
END;
Explanation:
increase_salary(101, 10)কল করার মাধ্যমে কর্মচারী ID 101 এর স্যালারি 10% বৃদ্ধি হবে।
Function
একটি Function একটি PL/SQL ব্লক যা একটি মান (যেমন একটি সংখ্যা বা স্ট্রিং) ফেরত দেয়। Functions সাধারণত ক্যালকুলেশন বা ট্রান্সফরমেশন করার জন্য ব্যবহৃত হয় এবং সাধারণত SELECT কুইরি, INSERT, UPDATE বা DELETE স্টেটমেন্টের অংশ হিসেবে ব্যবহার করা হয়।
Function তৈরি করা
CREATE OR REPLACE FUNCTION get_employee_salary (emp_id IN NUMBER)
RETURN NUMBER
IS
emp_salary NUMBER;
BEGIN
SELECT salary INTO emp_salary
FROM employees
WHERE employee_id = emp_id;
RETURN emp_salary;
END get_employee_salary;
Explanation:
get_employee_salaryহল একটি function যা কর্মচারীর স্যালারি ফেরত দেয়।emp_idপ্যারামিটারটি কর্মচারীর আইডি যা ফাংশনের ইনপুট হিসেবে ব্যবহার করা হয়।SELECTকুইরি ব্যবহার করে ডেটাবেস থেকে কর্মচারীর স্যালারি বের করে, এবং তা RETURN করা হয়।
Function কল করা
DECLARE
emp_salary NUMBER;
BEGIN
emp_salary := get_employee_salary(101); -- Employee ID 101 এর স্যালারি বের করা
DBMS_OUTPUT.PUT_LINE('Salary of Employee ID 101: ' || emp_salary);
END;
Explanation:
get_employee_salary(101)ফাংশন কল করে কর্মচারী ID 101 এর স্যালারি পাওয়া যাবে এবং তাemp_salaryভেরিয়েবলে সংরক্ষিত হবে।- এরপর
DBMS_OUTPUT.PUT_LINEএর মাধ্যমে স্যালারি প্রিন্ট করা হবে।
Procedure এবং Function এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Stored Procedure | Function |
|---|---|---|
| Return Type | কোন মান ফেরত দেয় না | একটি মান ফেরত দেয় (যেমন NUMBER, VARCHAR2) |
| Usage | সাধারণত ডেটাবেস অপারেশন (যেমন INSERT, UPDATE, DELETE) করার জন্য ব্যবহৃত হয় | ডেটা রিটার্ন বা ক্যালকুলেশন করার জন্য ব্যবহৃত হয় |
| Call | CALL স্টেটমেন্ট ব্যবহার করা হয় | সাধারণ SQL কুইরি বা PL/SQL ব্লকে ব্যবহার করা হয় |
| Can be Used in SELECT | না, সরাসরি SELECT কুইরিতে ব্যবহার করা যায় না | হ্যাঁ, SELECT কুইরিতে ব্যবহৃত হতে পারে |
Procedure এবং Function এর ক্ষেত্রে কিছু ভাল অনুশীলন
- Procedures সাধারণত COMMIT বা ROLLBACK করতে না দেওয়া ভাল, কারণ ডেটাবেসের ট্রানজেকশন নিয়ন্ত্রণ করা Application Layer এর কাজ হওয়া উচিত।
- Functions সাধারণত শুধুমাত্র মান ফেরত দেয়, তারা ডেটাবেসে কোনো পরিবর্তন বা অপারেশন সম্পাদন করে না।
- যখন একাধিক ডেটাবেস অপারেশন করতে হয়, তখন Stored Procedure ব্যবহার করা উচিত। যদি শুধু একক মান বা ক্যালকুলেশন প্রয়োজন হয়, তবে Function উপযুক্ত।
Exception Handling in Procedures and Functions
ডেটাবেস অপারেশন চলাকালীন ত্রুটি হ্যান্ডলিং অত্যন্ত গুরুত্বপূর্ণ। PL/SQL তে ত্রুটি হ্যান্ডলিং এর জন্য EXCEPTION ব্লক ব্যবহার করা হয়।
Procedure এ Exception Handling
CREATE OR REPLACE PROCEDURE increase_salary (emp_id IN NUMBER, increase_percentage IN NUMBER)
IS
BEGIN
UPDATE employees
SET salary = salary + (salary * increase_percentage / 100)
WHERE employee_id = emp_id;
COMMIT;
DBMS_OUTPUT.PUT_LINE('Salary updated for Employee ID: ' || emp_id);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No data found for Employee ID: ' || emp_id);
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);
END increase_salary;
Function এ Exception Handling
CREATE OR REPLACE FUNCTION get_employee_salary (emp_id IN NUMBER)
RETURN NUMBER
IS
emp_salary NUMBER;
BEGIN
SELECT salary INTO emp_salary
FROM employees
WHERE employee_id = emp_id;
RETURN emp_salary;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN 0; -- Return 0 if no data found
WHEN OTHERS THEN
RETURN -1; -- Return -1 if an error occurs
END get_employee_salary;
Conclusion
- Stored Procedures এবং Functions PL/SQL এর অত্যন্ত গুরুত্বপূর্ণ উপাদান, যেগুলি ডেটাবেসের মধ্যে পুনঃব্যবহারযোগ্য কোড তৈরির জন্য ব্যবহৃত হয়।
- Stored Procedures সাধারণত ডেটাবেসে পরিবর্তন করার জন্য ব্যবহৃত হয়, যেখানে Functions সাধারণত ক্যালকুলেশন বা মান ফেরত দেওয়ার জন্য ব্যবহৃত হয়।
- Proper exception handling, efficient use of parameters, এবং logical structuring code তে দক্ষতা বৃদ্ধি করে এবং পারফরম্যান্স উন্নত করে।
Read more