PL/SQL তে Procedure এবং Function দুটি গুরুত্বপূর্ণ অংশ, যেগুলি কোড পুনঃব্যবহারযোগ্য করতে এবং বিভিন্ন ডাটাবেস অপারেশনকে সহজ এবং দ্রুত করতে ব্যবহৃত হয়। নিচে, আমরা Procedure এবং Function এর বাস্তব উদাহরণ দেখবো।
১. Procedure উদাহরণ
PL/SQL Procedure হল এমন একটি স্টোরড প্রোগ্রাম যা কোনও নির্দিষ্ট কাজ সম্পন্ন করে এবং কোন ভ্যালু রিটার্ন করে না। প্রোসিডিউর সাধারণত ডেটাবেসে পরিবর্তন আনার জন্য ব্যবহৃত হয়, যেমন ইনসার্ট, আপডেট বা ডিলিট।
উদাহরণ: একটি প্রোসিডিউর যা একজন কর্মচারীর বেতন আপডেট করবে
ধরা যাক, আমাদের একটি employees নামক টেবিল রয়েছে এবং আমরা একটি প্রোসিডিউর তৈরি করতে চাই যা নির্দিষ্ট কর্মচারীর employee_id এর ভিত্তিতে তাদের বেতন আপডেট করবে।
CREATE OR REPLACE PROCEDURE update_employee_salary(
p_employee_id IN employees.employee_id%TYPE,
p_salary IN employees.salary%TYPE
)
IS
BEGIN
UPDATE employees
SET salary = p_salary
WHERE employee_id = p_employee_id;
-- Commit the changes
COMMIT;
DBMS_OUTPUT.PUT_LINE('Salary updated successfully!');
END;
/
ব্যাখ্যা:
- Procedure নাম:
update_employee_salary - Parameter: দুটি ইনপুট প্যারামিটার আছে -
p_employee_idএবংp_salary। এই প্যারামিটারগুলির মাধ্যমে আমরা কর্মচারীরemployee_idএবং আপডেট করার জন্য নতুন বেতন পাস করব। - কাজ: এই প্রোসিডিউরটি কর্মচারীর বেতন আপডেট করবে এবং তারপরে একটি সফল বার্তা প্রিন্ট করবে।
প্রোসিডিউর কল করা:
BEGIN
update_employee_salary(1001, 55000);
END;
/
এখানে, 1001 হল কর্মচারীর আইডি এবং 55000 হল নতুন বেতন। এই কলটি প্রোসিডিউরটি চালাবে এবং নির্দিষ্ট কর্মচারীর বেতন আপডেট করবে।
২. Function উদাহরণ
PL/SQL Function হল একটি স্টোরড প্রোগ্রাম যা একটি মান রিটার্ন করে। ফাংশন সাধারণত গণনা বা ডেটা প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়, যেখানে একটি মান রিটার্ন করা প্রয়োজন।
উদাহরণ: একটি ফাংশন যা কর্মচারীর বেতন বৃদ্ধি হিসাব করবে
ধরা যাক, আমাদের একটি ফাংশন তৈরি করতে হবে যা একটি নির্দিষ্ট কর্মচারীর বেতন এবং বেতন বৃদ্ধি শতাংশ নিয়ে তার নতুন বেতন রিটার্ন করবে।
CREATE OR REPLACE FUNCTION calculate_new_salary(
p_employee_id IN employees.employee_id%TYPE,
p_increase_percentage IN NUMBER
)
RETURN NUMBER
IS
v_current_salary employees.salary%TYPE;
v_new_salary NUMBER;
BEGIN
-- Get the current salary of the employee
SELECT salary INTO v_current_salary
FROM employees
WHERE employee_id = p_employee_id;
-- Calculate the new salary
v_new_salary := v_current_salary + (v_current_salary * p_increase_percentage / 100);
-- Return the new salary
RETURN v_new_salary;
END;
/
ব্যাখ্যা:
- Function নাম:
calculate_new_salary - Parameters:
p_employee_id(কর্মচারীর আইডি) এবংp_increase_percentage(বেতন বৃদ্ধির শতাংশ)। - Return Type:
NUMBER, কারণ ফাংশনটি নতুন বেতনটি রিটার্ন করবে। - কাজ: এই ফাংশনটি প্রথমে কর্মচারীর বর্তমান বেতন পাবে, তারপর বেতন বৃদ্ধির শতাংশের ভিত্তিতে নতুন বেতন হিসাব করবে এবং সেই নতুন বেতনটি রিটার্ন করবে।
ফাংশন কল করা:
DECLARE
v_new_salary NUMBER;
BEGIN
v_new_salary := calculate_new_salary(1001, 10);
DBMS_OUTPUT.PUT_LINE('The new salary is: ' || v_new_salary);
END;
/
এখানে, 1001 হল কর্মচারীর আইডি এবং 10 হল বেতন বৃদ্ধির শতাংশ (১০% বৃদ্ধি)। ফাংশনটি কল করে এবং নতুন বেতন প্রিন্ট করে।
প্রধান পার্থক্য:
| Feature | Procedure | Function |
|---|---|---|
| Return Value | Return করে না (void) | Return করে একটি মান (value) |
| Usage | সাধারণত ডেটা পরিবর্তন (INSERT, UPDATE, DELETE) | সাধারণত মান গণনা (Computation) |
| Call | কল করা হয় CALL অথবা BEGIN...END | কল করা হয় SELECT বা অন্য ফাংশন থেকে |
উপসংহার:
- Procedure সাধারণত ডেটাবেসে কিছু কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়, যেমন তথ্য আপডেট করা বা ইনসার্ট করা, এবং এটি কোন মান রিটার্ন করে না।
- Function একটি নির্দিষ্ট মান রিটার্ন করে এবং সাধারণত মান গণনা বা ডেটা প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়।
Read more