User-defined Exceptions তৈরি এবং ব্যবহার

Database Tutorials - পিএল/এসকিউএল (PL/SQL) - PL/SQL Exception Handling
200

PL/SQL-এ User-defined Exceptions ব্যবহারকারী বা ডেভেলপার দ্বারা নির্দিষ্ট করা বিশেষ ধরণের ত্রুটি (error) যা প্রোগ্রামের নির্দিষ্ট অংশে ঘটে এবং তাকে যথাযথভাবে হ্যান্ডল করতে সাহায্য করে। PL/SQL তে পূর্বনির্ধারিত কিছু এক্সেপশন যেমন NO_DATA_FOUND, TOO_MANY_ROWS ইত্যাদি থাকে, কিন্তু যদি আপনার প্রোগ্রামে বিশেষ ধরণের ত্রুটি ঘটে যা পূর্বনির্ধারিত এক্সেপশন দ্বারা কভার করা হয়নি, তবে আপনি নিজে একটি User-defined Exception তৈরি করতে পারেন।

User-defined Exception এর প্রয়োজনীয়তা:

  • যখন পূর্বনির্ধারিত এক্সেপশন ব্যবহার করে সমস্যা সমাধান করা সম্ভব না হয়।
  • প্রোগ্রামের ব্যবসায়িক লজিকের জন্য একটি কাস্টম ত্রুটি বার্তা তৈরি করার প্রয়োজন হলে।
  • নির্দিষ্ট ধরণের ত্রুটি কন্ট্রোল করার জন্য প্রয়োজনে কাস্টম এক্সেপশন তৈরি করা।

User-defined Exception তৈরি এবং ব্যবহারের ধাপ:

  1. একটি এক্সেপশন ঘোষণা করা
  2. এটি ডিফাইন করা এবং এক্সেপশন হ্যান্ডলিং করা

১. একটি এক্সেপশন ঘোষণা করা

প্রথমে, আপনাকে এক্সেপশনটি ঘোষণা করতে হবে। PL/SQL-এ EXCEPTION ব্লকে এটি ডিক্লেয়ার করা হয়।

Syntax:

DECLARE
   exception_name EXCEPTION;  -- User-defined exception declaration
BEGIN
   -- code
EXCEPTION
   WHEN exception_name THEN
      -- exception handling code
END;

উদাহরণ:

DECLARE
   insufficient_balance EXCEPTION;  -- Declaring a user-defined exception
   v_balance NUMBER := 500;
BEGIN
   IF v_balance < 1000 THEN
      RAISE insufficient_balance;  -- Raise the exception if condition is met
   END IF;
EXCEPTION
   WHEN insufficient_balance THEN
      DBMS_OUTPUT.PUT_LINE('Insufficient balance! Please add more funds.');
END;

এখানে, insufficient_balance নামে একটি কাস্টম এক্সেপশন ঘোষণা করা হয়েছে। যদি v_balance ১০০০ এর নিচে থাকে, তবে এটি রেইজ (raise) করা হবে এবং একটি কাস্টম বার্তা প্রদর্শিত হবে।


২. এক্সেপশন রেইজ (RAISE) করা

একটি User-defined exception চালু করার জন্য RAISE স্টেটমেন্ট ব্যবহার করা হয়। এটি আপনাকে নির্দিষ্ট শর্ত পূর্ণ হলে এক্সেপশনটি তোলার (raise) সুযোগ দেয়।

Syntax:

RAISE exception_name;  -- RAISE keyword to trigger the exception

উদাহরণ:

DECLARE
   invalid_age EXCEPTION;
   v_age NUMBER := -5;
BEGIN
   IF v_age < 0 THEN
      RAISE invalid_age;  -- Raise exception when age is invalid
   END IF;
EXCEPTION
   WHEN invalid_age THEN
      DBMS_OUTPUT.PUT_LINE('Invalid age entered!');
END;

এখানে, invalid_age এক্সেপশনটি তখন রেইজ হবে যখন v_age এর মান নেতিবাচক (negative) হবে। এরপর EXCEPTION ব্লক এ গিয়ে "Invalid age entered!" বার্তা প্রিন্ট হবে।


৩. User-defined Exceptions Handling

একটি user-defined exception রেইজ করার পরে, আপনাকে সেই exception-টি যথাযথভাবে হ্যান্ডেল করতে হবে। হ্যান্ডলিং প্রক্রিয়াটি EXCEPTION ব্লকে ঘটে।

Syntax:

DECLARE
   exception_name EXCEPTION;
BEGIN
   -- Code that raises the exception
EXCEPTION
   WHEN exception_name THEN
      -- Code to handle the exception
END;

উদাহরণ:

DECLARE
   invalid_id EXCEPTION;  -- Declaring a user-defined exception
   v_emp_id NUMBER := 9999;
BEGIN
   IF v_emp_id NOT IN (SELECT employee_id FROM employees) THEN
      RAISE invalid_id;  -- Raise exception if employee ID doesn't exist
   END IF;
EXCEPTION
   WHEN invalid_id THEN
      DBMS_OUTPUT.PUT_LINE('Employee ID does not exist!');
END;

এখানে, invalid_id এক্সেপশনটি রেইজ হবে যদি কর্মচারী আইডি employees টেবিলের মধ্যে না থাকে। এরপর, EXCEPTION ব্লকের মাধ্যমে এই ত্রুটির জন্য একটি কাস্টম বার্তা প্রিন্ট করা হবে।


৪. RAISE_APPLICATION_ERROR ব্যবহার করা

RAISE_APPLICATION_ERROR ব্যবহার করে আপনি আরো নির্দিষ্ট ত্রুটি বার্তা তৈরি করতে পারেন। এই ফাংশনটি ব্যবহারকারীকে আরও বিস্তারিত ত্রুটি বার্তা প্রদান করতে সহায়তা করে।

Syntax:

RAISE_APPLICATION_ERROR(error_number, error_message);
  • error_number: একটি নেতিবাচক মান যা ত্রুটির কোড হিসেবে ব্যবহৃত হয়। এটি ২০০০০ থেকে ২০৯৯৯ পর্যন্ত হতে পারে।
  • error_message: একটি কাস্টম ত্রুটি বার্তা যা প্রদর্শিত হবে।

উদাহরণ:

DECLARE
   insufficient_funds EXCEPTION;
   v_balance NUMBER := 100;
BEGIN
   IF v_balance < 500 THEN
      RAISE_APPLICATION_ERROR(-20001, 'Insufficient funds! Your balance is too low.');
   END IF;
EXCEPTION
   WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);  -- Display error message
END;

এখানে, যদি v_balance ৫০০ এর কম হয়, তবে RAISE_APPLICATION_ERROR ব্যবহার করে একটি কাস্টম ত্রুটি কোড এবং বার্তা রেইজ করা হবে। SQLERRM ব্যবহার করে এর ত্রুটি বার্তা প্রদর্শন করা হবে।


User-defined Exceptions এর সুবিধা:

  1. কাস্টম ত্রুটি বার্তা: আপনি নির্দিষ্ট কন্ডিশনে কাস্টম ত্রুটি বার্তা প্রদান করতে পারেন, যা ডেভেলপারের জন্য কোডের সমস্যা বুঝতে সহজ করে তোলে।
  2. প্রোগ্রাম লজিক: নির্দিষ্ট শর্তে কাস্টম এক্সেপশন ব্যবহার করে প্রোগ্রামের মধ্যে লজিক প্রয়োগ করা যায়।
  3. ভাল ত্রুটি হ্যান্ডলিং: যেহেতু আপনি নিজে ত্রুটি তৈরি ও হ্যান্ডেল করতে পারবেন, তাই আপনার প্রোগ্রাম ত্রুটি মোকাবেলায় আরও শক্তিশালী হবে।

Conclusion:

PL/SQL-এ User-defined Exceptions ব্যবহারকারীর প্রয়োজন অনুসারে কাস্টম ত্রুটি তৈরি করতে সহায়তা করে। এগুলি আপনি শর্তানুযায়ী প্রয়োগ করে প্রোগ্রামটি আরও নির্ভরযোগ্য এবং ব্যবহারযোগ্য করতে পারেন। এক্সেপশন রেইজ (RAISE) এবং RAISE_APPLICATION_ERROR এর মাধ্যমে নির্দিষ্ট ত্রুটির জন্য বার্তা প্রদান এবং তা হ্যান্ডল করা সম্ভব হয়, যা আপনার কোডে ত্রুটি মোকাবেলা করার সক্ষমতা বাড়ায়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...