PL/SQL-এ Functions এবং Procedures হল দুটি মৌলিক প্রোগ্রামিং কন্সট্রাক্ট যা পুনঃব্যবহারযোগ্য কোড ব্লক তৈরি করতে সাহায্য করে। এই দুটি ব্যবহার করে আপনি কোডের কার্যকারিতা নির্দিষ্ট করতে পারেন, এবং তারা সাধারণত ডেটাবেসে বিভিন্ন ক্রিয়াকলাপ সম্পাদন করতে ব্যবহৃত হয়।
1. Function এর উদাহরণ
Function হল একটি প্রোগ্রামিং ব্লক যা একটি মান ফিরিয়ে দেয়। এটি সাধারণত ডেটাবেসের ক্যালকুলেশন বা মানের প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়।
Function Syntax:
CREATE OR REPLACE FUNCTION get_salary(emp_id IN NUMBER)
RETURN NUMBER IS
emp_salary NUMBER;
BEGIN
-- Query to fetch the salary for a given employee
SELECT salary INTO emp_salary
FROM employees
WHERE employee_id = emp_id;
RETURN emp_salary;
END get_salary;
এই উদাহরণে:
- get_salary হল একটি function যা employee ID (
emp_id) ইনপুট হিসেবে নেয় এবং সেই employee এর salary ফেরত দেয়। - RETURN স্টেটমেন্ট ব্যবহার করে emp_salary ভেরিয়েবলটি রিটার্ন করা হয়।
- এই ফাংশনটি আপনাকে employee_id এর ভিত্তিতে salary বের করতে সাহায্য করবে।
Function ব্যবহার:
DECLARE
emp_salary NUMBER;
BEGIN
-- Calling the function and storing the returned value
emp_salary := get_salary(101);
DBMS_OUTPUT.PUT_LINE('Salary: ' || emp_salary);
END;
এখানে:
- get_salary(101) কল করে employee ID 101 এর salary নিয়ে আসা হচ্ছে।
2. Procedure এর উদাহরণ
Procedure হল একটি প্রোগ্রামিং ব্লক যা কিছু কার্যক্রম সম্পাদন করে এবং কোন মান ফেরত দেয় না। এটি সাধারণত ডেটাবেসে INSERT, UPDATE, DELETE বা অন্যান্য অপারেশন সম্পাদন করার জন্য ব্যবহৃত হয়।
Procedure Syntax:
CREATE OR REPLACE PROCEDURE update_salary(emp_id IN NUMBER, salary_increment IN NUMBER) IS
BEGIN
-- Update the salary of an employee by a given increment
UPDATE employees
SET salary = salary + salary_increment
WHERE employee_id = emp_id;
COMMIT; -- Save the changes to the database
END update_salary;
এই উদাহরণে:
- update_salary হল একটি procedure যা employee ID (
emp_id) এবং salary increment (salary_increment) ইনপুট নেয় এবং সংশ্লিষ্ট employee এর salary আপডেট করে। - এটি কোন মান ফেরত দেয় না; তবে, UPDATE স্টেটমেন্টের মাধ্যমে ডেটাবেসের salary পরিবর্তন করে।
Procedure ব্যবহার:
BEGIN
-- Calling the procedure to update the salary of employee with ID 101
update_salary(101, 5000);
DBMS_OUTPUT.PUT_LINE('Salary Updated for Employee ID: 101');
END;
এখানে:
- update_salary(101, 5000) কল করে employee ID 101 এর salary 5000 টাকা বাড়ানো হচ্ছে।
Functions এবং Procedures এর পার্থক্য
| বিষয় | Function | Procedure |
|---|---|---|
| ফিরিয়ে দেয় | একটি মান (value) ফিরিয়ে দেয় | কোন মান ফিরিয়ে দেয় না (Void) |
| ব্যবহার | Expression-এর মধ্যে ব্যবহার করা যায় (যেমন, SELECT, INSERT) | Independent স্টেটমেন্ট হিসেবে ব্যবহৃত হয় |
| ফিরিয়ে দেওয়ার ধরন | RETURN স্টেটমেন্ট দিয়ে মান রিটার্ন করে | RETURN স্টেটমেন্ট ব্যবহার করা হয় না |
| কলিং | Expression বা স্টেটমেন্টে কল করা যায় | Statement-এ কল করা হয় |
| ইনপুট প্যারামিটার | সাধারণত ইনপুট প্যারামিটার নেয় এবং তা ব্যবহার করে | ইনপুট, আউটপুট অথবা ইনআউট প্যারামিটার নিতে পারে |
আরও উদাহরণ
Function উদাহরণ 2:
একটি function যেটি দুটি সংখ্যা যোগ করে ফিরিয়ে দিবে:
CREATE OR REPLACE FUNCTION add_numbers(num1 IN NUMBER, num2 IN NUMBER)
RETURN NUMBER IS
BEGIN
RETURN num1 + num2;
END add_numbers;
ব্যবহার:
DECLARE
result NUMBER;
BEGIN
result := add_numbers(10, 20);
DBMS_OUTPUT.PUT_LINE('Sum is: ' || result);
END;
Procedure উদাহরণ 2:
একটি procedure যেটি কোনো employee এর নাম পরিবর্তন করবে:
CREATE OR REPLACE PROCEDURE update_employee_name(emp_id IN NUMBER, new_name IN VARCHAR2) IS
BEGIN
UPDATE employees
SET first_name = new_name
WHERE employee_id = emp_id;
COMMIT;
END update_employee_name;
ব্যবহার:
BEGIN
update_employee_name(101, 'John Doe');
DBMS_OUTPUT.PUT_LINE('Employee Name Updated');
END;
Conclusion
- Functions সাধারণত কোনো মান ফিরিয়ে দেয় এবং এর ফলাফল expression বা calculation এর অংশ হিসেবে ব্যবহার করা হয়।
- Procedures সাধারণত কোনো কার্যক্রম সম্পাদন করতে ব্যবহৃত হয় এবং কোনো মান ফিরিয়ে দেয় না। এটি বিভিন্ন কাজ (INSERT, UPDATE, DELETE) সম্পাদন করার জন্য ব্যবহার হয়।
PL/SQL-এ Functions এবং Procedures উভয়ই কোড পুনঃব্যবহারযোগ্যতা, নির্ভরযোগ্যতা এবং সংগঠনের জন্য অপরিহার্য।
Read more