PL/SQL (Procedural Language/Structured Query Language) এর মধ্যে Procedure এবং Function হল দুটি গুরুত্বপূর্ণ উপাদান, যা ডেটাবেস অপারেশন পরিচালনা করতে ব্যবহৃত হয়।
- Procedure হল একটি ব্লক যা একটি নির্দিষ্ট কাজ করে এবং কিছু রিটার্ন করে না। এটি কার্যকরী কোডের একত্রিত সেট হিসেবে কাজ করে।
- Function হল একটি ব্লক যা একটি মান রিটার্ন করে। এটি সাধারণত কোনো গণনা বা ডেটা প্রসেসিং করতে ব্যবহৃত হয় এবং এটি কোনো মান (value) রিটার্ন করতে বাধ্য।
Procedure কল করা
PL/SQL এ Procedure কল করার জন্য আপনাকে EXECUTE কমান্ড ব্যবহার করতে হয়। প্রক্রিয়া কল করার জন্য একটি BEGIN এবং END ব্লক এর মধ্যে কোড ব্যবহার করা হয়।
Procedure তৈরি করা:
CREATE OR REPLACE PROCEDURE greet_user (p_name IN VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, ' || p_name);
END greet_user;
এখানে, greet_user নামে একটি Procedure তৈরি করা হয়েছে, যা একটি ইনপুট প্যারামিটার p_name গ্রহণ করে এবং তাকে হ্যালো সিস্টেম আউটপুট হিসেবে প্রিন্ট করে।
Procedure কল করা:
Procedure কল করার জন্য EXECUTE বা BEGIN...END ব্লক ব্যবহার করা যায়।
EXECUTE কমান্ডের মাধ্যমে কল:
EXECUTE greet_user('John');BEGIN...END ব্লক দিয়ে কল:
BEGIN greet_user('John'); END;
এখানে, greet_user('John') কল করলে আউটপুট হবে: Hello, John
Function কল করা
Function এর মাধ্যমে একটি মান রিটার্ন করা হয়, সুতরাং একটি SELECT স্টেটমেন্টে অথবা কোনো PL/SQL ব্লক এর মধ্যে ফাংশন কল করা যায়।
Function তৈরি করা:
CREATE OR REPLACE FUNCTION add_numbers (p_num1 IN NUMBER, p_num2 IN NUMBER)
RETURN NUMBER IS
BEGIN
RETURN p_num1 + p_num2;
END add_numbers;
এখানে, add_numbers নামে একটি ফাংশন তৈরি করা হয়েছে, যা দুটি সংখ্যা যোগ করে এবং ফলাফল রিটার্ন করে।
Function কল করা:
SELECT স্টেটমেন্টে ফাংশন কল:
SELECT add_numbers(10, 20) FROM dual;এখানে,
add_numbers(10, 20)ফাংশন কল করলে ফলাফল হবে:30PL/SQL ব্লকে ফাংশন কল:
DECLARE v_result NUMBER; BEGIN v_result := add_numbers(10, 20); DBMS_OUTPUT.PUT_LINE('The sum is: ' || v_result); END;এই ব্লকে,
add_numbers(10, 20)ফাংশন কল করা হচ্ছে এবং তার রিটার্ন মানv_resultভেরিয়েবলে রাখা হচ্ছে। আউটপুট হবে:The sum is: 30
Procedure এবং Function এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Procedure | Function |
|---|---|---|
| Return Value | কোনো মান রিটার্ন করে না | একটি মান রিটার্ন করে |
| ব্যবহার | প্রধানত কার্যকরী কাজের জন্য ব্যবহার হয় | সাধারণত মানের গণনা বা প্রসেসিংয়ের জন্য ব্যবহার হয় |
| ডাটা ম্যানিপুলেশন | ডাটা ম্যানিপুলেশন করতে পারে | শুধুমাত্র একটি মান প্রদান করে |
| কল করার পদ্ধতি | EXECUTE বা BEGIN...END ব্লক দিয়ে | SELECT স্টেটমেন্ট বা PL/SQL ব্লক দিয়ে |
Procedure এবং Function এর কলের বাস্তব উদাহরণ
Procedure কলের উদাহরণ:
-- Procedure Create
CREATE OR REPLACE PROCEDURE employee_details (p_employee_id IN NUMBER) IS
v_name VARCHAR2(100);
BEGIN
SELECT first_name || ' ' || last_name INTO v_name
FROM employees
WHERE employee_id = p_employee_id;
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_name);
END employee_details;
-- Procedure Call in PL/SQL Block
BEGIN
employee_details(100); -- 100 is the employee_id
END;
এখানে, employee_details নামে একটি procedure তৈরি করা হয়েছে যা কর্মচারীর ID এর ভিত্তিতে তাদের নাম প্রদান করে।
Function কলের উদাহরণ:
-- Function Create
CREATE OR REPLACE FUNCTION get_employee_salary (p_employee_id IN NUMBER)
RETURN NUMBER IS
v_salary NUMBER;
BEGIN
SELECT salary INTO v_salary
FROM employees
WHERE employee_id = p_employee_id;
RETURN v_salary;
END get_employee_salary;
-- Function Call in PL/SQL Block
DECLARE
v_salary NUMBER;
BEGIN
v_salary := get_employee_salary(100); -- 100 is the employee_id
DBMS_OUTPUT.PUT_LINE('Employee Salary: ' || v_salary);
END;
এখানে, get_employee_salary নামে একটি function তৈরি করা হয়েছে যা কর্মচারীর ID এর ভিত্তিতে তাদের বেতন রিটার্ন করে।
Procedure এবং Function এর কল করার চ্যালেঞ্জ এবং Best Practices
- Error Handling: ফাংশন বা প্রোসিডিউর কল করার সময় কোনো ত্রুটি ঘটলে তা যথাযথভাবে
EXCEPTION HANDLINGব্যবহার করে সমাধান করতে হবে। - Parameter Validation: ইনপুট প্যারামিটারগুলোর ভ্যালিডেশন করা উচিত যাতে ভুল ডেটা ফাংশন বা প্রোসিডিউরে প্রবাহিত না হয়।
- Performance Optimization: যদি অনেক ডেটা প্রসেস করতে হয়, তবে BULK COLLECT বা FORALL ব্যবহার করে কোডের পারফরম্যান্স উন্নত করা উচিত।
- Reusable Code: Procedure এবং Function গুলি পুনরায় ব্যবহারের উপযোগী হতে হবে, যাতে একাধিক জায়গায় এগুলি কল করা যায়।
এইভাবে PL/SQL-এ Procedure এবং Function কল করা হয় এবং এগুলির মধ্যে পার্থক্য ও বাস্তব উদাহরণগুলি দেওয়া হয়েছে।
Read more