Nested Functions এবং Procedures

PL/SQL এর Advanced Topics - পিএল/এসকিউএল (PL/SQL) - Database Tutorials

340

Nested Functions এবং Procedures হল এমন ফাংশন বা প্রোসিডিউর যা অন্য ফাংশন বা প্রোসিডিউরের ভিতরে সংজ্ঞায়িত করা হয়। PL/SQL এ Nested Functions এবং Procedures সাধারণত ছোট ছোট কোড ব্লক তৈরি করার জন্য ব্যবহৃত হয়, যা মূল ফাংশন বা প্রোসিডিউরের কার্যকারিতা বাড়ায়। এর মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা এবং মোডুলারিটি বৃদ্ধি পায়।

এটি ডেভেলপারদের আরও সুনির্দিষ্টভাবে এবং কার্যকরভাবে কোড লেখার সুযোগ দেয়।


Nested Functions

PL/SQL এ Nested Functions হল এমন ফাংশন যা একটি মূল ফাংশনের ভিতরে ডিফাইন করা হয়। Nested Functions শুধুমাত্র তাদের অভ্যন্তরীণ ফাংশন বা প্রোসিডিউরের মধ্যে ব্যবহৃত হতে পারে এবং বাইরের কোড থেকে অ্যাক্সেস করা যায় না।

Nested Function এর উদাহরণ

CREATE OR REPLACE FUNCTION calculate_tax (income IN NUMBER) 
RETURN NUMBER 
IS
    -- Nested function to calculate income tax
    FUNCTION tax_rate (income IN NUMBER) RETURN NUMBER IS
    BEGIN
        IF income <= 30000 THEN
            RETURN 0.10;  -- 10% tax for income <= 30000
        ELSIF income <= 60000 THEN
            RETURN 0.15;  -- 15% tax for income <= 60000
        ELSE
            RETURN 0.20;  -- 20% tax for income > 60000
        END IF;
    END tax_rate;
    
    tax_amount NUMBER;
BEGIN
    -- Calling nested function to get tax rate
    tax_amount := income * tax_rate(income);  -- Calculate tax using nested function
    RETURN tax_amount;
END calculate_tax;

Explanation:

  • এখানে tax_rate হল একটি nested function, যা calculate_tax ফাংশনের ভিতরে ডিফাইন করা হয়েছে।
  • tax_rate ফাংশন ইনপুট হিসেবে ইনকাম নেয় এবং তার উপর ভিত্তি করে ট্যাক্স রেট প্রদান করে।
  • মূল calculate_tax ফাংশন এই tax_rate ফাংশনকে কল করে এবং তারপর ট্যাক্স ক্যালকুলেট করে ফিরিয়ে দেয়।

Nested Function কল করা

DECLARE
   total_tax NUMBER;
BEGIN
   total_tax := calculate_tax(50000);  -- Tax calculation for income 50000
   DBMS_OUTPUT.PUT_LINE('Total tax: ' || total_tax);
END;

Explanation:

  • calculate_tax(50000) কল করার মাধ্যমে 50000 ইনকামের জন্য ট্যাক্স ক্যালকুলেট করা হয় এবং ফলাফলটি প্রিন্ট করা হয়।

Nested Procedures

Nested Procedures হল এমন প্রোসিডিউর যেগুলি অন্য প্রোসিডিউরের ভিতরে ডিফাইন করা হয়। Nested Procedures মূলত একটি প্রোসিডিউরের কার্যকারিতা বাড়াতে ব্যবহৃত হয় এবং সাধারণত তাদের অভ্যন্তরীণ কার্যক্রমের অংশ হিসেবে ব্যবহৃত হয়। Nested Procedures একাধিক ধাপে কাজ করতে সহায়তা করে এবং কোডকে আরও পরিষ্কার ও মোডুলার করে তোলে।

Nested Procedure এর উদাহরণ

CREATE OR REPLACE PROCEDURE manage_employee_salary (emp_id IN NUMBER, increase_percentage IN NUMBER)
IS
    -- Nested Procedure to update salary
    PROCEDURE update_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 update_salary;
    
    -- Nested Procedure to log the salary update
    PROCEDURE log_salary_update (emp_id IN NUMBER) IS
    BEGIN
        DBMS_OUTPUT.PUT_LINE('Logging salary update for Employee ID: ' || emp_id);
    END log_salary_update;
BEGIN
    -- Call nested procedures
    update_salary(emp_id, increase_percentage);  -- Update salary
    log_salary_update(emp_id);                    -- Log the update
END manage_employee_salary;

Explanation:

  • এখানে update_salary এবং log_salary_update দুটি nested procedures যা manage_employee_salary প্রোসিডিউরের ভিতরে ডিফাইন করা হয়েছে।
  • update_salary প্রোসিডিউরটি কর্মচারীর স্যালারি আপডেট করে, এবং log_salary_update প্রোসিডিউরটি লগে একটি বার্তা প্রিন্ট করে।
  • মূল প্রোসিডিউর manage_employee_salary এ দুটি নেস্টেড প্রোসিডিউরকে কল করেছে।

Nested Procedure কল করা

BEGIN
   manage_employee_salary(101, 10);  -- Employee ID 101 এর স্যালারি 10% বৃদ্ধি
END;

Explanation:

  • manage_employee_salary(101, 10) কল করার মাধ্যমে প্রথমে স্যালারি আপডেট হবে এবং তারপর লগে একটি বার্তা প্রিন্ট হবে।

Nested Functions এবং Procedures এর সুবিধা:

  1. Code Modularity: Nested Functions এবং Procedures কোডকে মডুলার করে তোলে, অর্থাৎ একাধিক কার্যকলাপ বা কোড ব্লককে ছোট ছোট অংশে ভাগ করা যায়।
  2. Reusability: ফাংশন বা প্রোসিডিউরের মধ্যে পুনঃব্যবহারযোগ্য কোড তৈরি করতে সাহায্য করে। Nested Functions বা Procedures কে অন্যত্র পুনরায় ব্যবহার করা যায়, বিশেষ করে যদি তারা অনেকগুলো স্থানে এক্সিকিউট হয়।
  3. Encapsulation: কোডের অভ্যন্তরীণ কার্যকলাপগুলো বাইরে থেকে অ্যাক্সেস না করে শুধু প্রাসঙ্গিক অংশগুলোই এক্সপোজ করা যায়। এটি কোডের সিকিউরিটি বাড়ায় এবং এর রক্ষণাবেক্ষণ সহজ করে।
  4. Code Readability: কোডের গঠন পরিষ্কার হয় এবং একাধিক ছোট কোড ব্লকের মাধ্যমে বড় কোডের কার্যকারিতা সহজে বুঝতে পারা যায়।

Nested Functions এবং Procedures এর সীমাবদ্ধতা

  1. Complexity: কোডে অনেক Nested Functions বা Procedures ব্যবহারের ফলে কোডের জটিলতা বাড়তে পারে, বিশেষ করে যখন একাধিক স্তরে নেস্টিং করা হয়।
  2. Performance Impact: Nested Functions বা Procedures এর ব্যবহারে কখনও কখনও পারফরম্যান্সের উপর প্রভাব পড়তে পারে, কারণ ডেটাবেসের ভিতরে অতিরিক্ত স্তর যুক্ত হয়।
  3. Readability Issues in Deep Nesting: খুব গভীর নেস্টিং (যেমন অনেক স্তরে ফাংশন বা প্রোসিডিউর নেস্ট করা) কোডের পাঠযোগ্যতা কমিয়ে দিতে পারে, যা রক্ষণাবেক্ষণ কঠিন করে তোলে।

Conclusion

  • Nested Functions এবং Procedures PL/SQL এ কোডের পুনঃব্যবহারযোগ্যতা এবং মডুলারিটি বৃদ্ধি করতে সহায়তা করে।
  • এগুলো ছোট ছোট কোড ব্লক তৈরি করার মাধ্যমে কোডকে আরও পরিষ্কার এবং কার্যকরী করে তোলে।
  • তবে, অনেক গভীর নেস্টিংয়ের ক্ষেত্রে কোড জটিল হয়ে যেতে পারে এবং পারফরম্যান্সে প্রভাব ফেলতে পারে, তাই সেগুলোর ব্যবহার সতর্কতার সাথে করা উচিত।
Content added By
Promotion

Are you sure to start over?

Loading...