Stored Procedures এবং Functions তৈরি করা

PL/SQL এর Stored Procedures এবং Functions - পিএল/এসকিউএল (PL/SQL) - Database Tutorials

356

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 ProcedureFunction
Return Typeকোন মান ফেরত দেয় নাএকটি মান ফেরত দেয় (যেমন NUMBER, VARCHAR2)
Usageসাধারণত ডেটাবেস অপারেশন (যেমন INSERT, UPDATE, DELETE) করার জন্য ব্যবহৃত হয়ডেটা রিটার্ন বা ক্যালকুলেশন করার জন্য ব্যবহৃত হয়
CallCALL স্টেটমেন্ট ব্যবহার করা হয়সাধারণ SQL কুইরি বা PL/SQL ব্লকে ব্যবহার করা হয়
Can be Used in SELECTনা, সরাসরি SELECT কুইরিতে ব্যবহার করা যায় নাহ্যাঁ, SELECT কুইরিতে ব্যবহৃত হতে পারে

Procedure এবং Function এর ক্ষেত্রে কিছু ভাল অনুশীলন

  1. Procedures সাধারণত COMMIT বা ROLLBACK করতে না দেওয়া ভাল, কারণ ডেটাবেসের ট্রানজেকশন নিয়ন্ত্রণ করা Application Layer এর কাজ হওয়া উচিত।
  2. Functions সাধারণত শুধুমাত্র মান ফেরত দেয়, তারা ডেটাবেসে কোনো পরিবর্তন বা অপারেশন সম্পাদন করে না।
  3. যখন একাধিক ডেটাবেস অপারেশন করতে হয়, তখন 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 তে দক্ষতা বৃদ্ধি করে এবং পারফরম্যান্স উন্নত করে।
Content added By
Promotion

Are you sure to start over?

Loading...