Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

पीएल/एसक्यूएल अपवाद हैंडलिंग:कुछ भी न करें (अपवाद को अनदेखा करें)

जबकि मैं मानता हूं कि 99% मामलों में कम से कम उन्हें कहीं लॉग किए बिना चुपचाप अपवादों को अनदेखा करना बुरा अभ्यास है, ऐसी विशिष्ट स्थितियां हैं जहां यह पूरी तरह से स्वीकार्य है।

इन स्थितियों में, NULL आपका मित्र है:

[...]
EXCEPTION

    WHEN OTHERS THEN
        NULL;
END;

अपवादों को अनदेखा करना वांछनीय हो सकता है, जहां दो विशिष्ट स्थितियां हैं:

1) आपके कोड में एक कथन है जिसे आप जानते हैं कि कभी-कभी विफल हो जाएगा और आप नहीं चाहते कि यह तथ्य आपके कार्यक्रम प्रवाह को बाधित करे। इस मामले में, आपको अपने कथन को नेस्टेड ब्लॉक में संलग्न करना चाहिए, जैसा कि निम्नलिखित उदाहरण से पता चलता है:

CREATE OR REPLACE PROCEDURE MY_PROCEDURE() 
IS
    l_empoyee_name  EMPLOYEES.EMPLOYEE_NAME%TYPE;
BEGIN
    -- Catch potential NO_DATA_FOUND exception and continue
    BEGIN 
        SELECT EMPLOYEE_NAME
        INTO l_empoyee_name
        FROM EMPLOYEES
        WHERE EMPLOYEE_ID = 12345;
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            NULL;
        WHEN OTHERS THEN
            RAISE;
    END;

    do_stuff();

EXCEPTION

    WHEN OTHERS THEN
        -- Propagate exception
        RAISE;
END;

ध्यान दें कि पीएल/एसक्यूएल आम तौर पर विजुअल बेसिक से ज्ञात अगले प्रकार के अपवाद प्रबंधन को ऑन एरर रिज्यूमे की अनुमति नहीं देता है, जहां सभी अपवादों को नजरअंदाज कर दिया जाता है और प्रोग्राम चलता रहता है जैसे कि कुछ भी नहीं हुआ (देखें त्रुटि पर PL में अगले प्रकार की त्रुटि प्रबंधन को फिर से शुरू करें /एसक्यूएल ओरेकल ) आपको संभावित रूप से विफल होने वाले कथनों को नेस्टेड ब्लॉक में स्पष्ट रूप से संलग्न करना होगा।

2) आपकी प्रक्रिया इतनी महत्वहीन है कि इसके द्वारा फेंके गए सभी अपवादों को अनदेखा करना आपके मुख्य कार्यक्रम तर्क को प्रभावित नहीं करेगा। (हालांकि, ऐसा बहुत कम होता है और अक्सर लंबे समय में डिबगिंग दुःस्वप्न हो सकता है)

BEGIN

    do_stuff();

EXCEPTION

    WHEN OTHERS THEN
        -- Ignore all exceptions and return control to calling block
        NULL;
END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीएल/एसक्यूएल का उपयोग करके पीडीएफ रिपोर्ट कैसे बनाएं

  2. Oracle MERGE स्टेटमेंट एरर (ORA-30926)

  3. पीएल/एसक्यूएल में स्ट्रिंग में अलग-अलग वर्णों की गिनती और नाम कैसे खोजें?

  4. डालने के दौरान अद्वितीय बाधा उल्लंघन:क्यों? (आकाशवाणी)

  5. SQLBLANKLINES सेट करें:SQLcl और SQL* Plus में खाली लाइनों की अनुमति कैसे दें