अपनी पिछली पोस्ट में, मैंने Oracle में बल्क कलेक्ट ऑपरेशंस के लिए उदाहरण दिए हैं। बल्क संग्रह प्रसंस्करण के दौरान त्रुटियों को संभालने के लिए अपवाद सहेजें के साथ बल्क संग्रह का एक उदाहरण यहां दिया गया है।
पीएल/एसक्यूएल बल्क कलेक्ट विथ सेव एक्सेप्शन उदाहरण
निम्नलिखित पीएल/एसक्यूएल प्रोग्राम में, यह एचआर स्कीमा कर्मचारी तालिका LAST_NAME कॉलम को अपडेट करेगा, और दो प्रयासों में यह एक पूर्ण मान के साथ अपडेट करने का प्रयास करेगा, जिसे शून्य बाधा लागू नहीं होने के कारण LAST_NAME कॉलम के लिए अनुमति नहीं है। तो, इस मामले में, यह त्रुटि उठाएगा, और यह स्क्रीन पर प्रिंट होगा, लेकिन कार्य अन्य रिकॉर्ड के लिए अद्यतन करना जारी रखेगा क्योंकि यहां हम अपवाद सहेजें का उपयोग कर रहे हैं थोक संग्रह . के साथ खंड ।
SET SERVEROUTPUT ON --Start the PL/SQL block-- DECLARE --A local PL/SQL table holds the list of new names-- TYPE T_EMP IS TABLE OF VARCHAR2 (100); L_EMP T_EMP := T_EMP ('Smith', 'Adams', NULL, 'King', NULL, 'George'); BULK_ERRORS EXCEPTION; PRAGMA EXCEPTION_INIT (BULK_ERRORS, -24381); BEGIN --FORALL to update the employee names-- FORALL I IN 1 .. L_EMP.COUNT SAVE EXCEPTIONS UPDATE EMPLOYEES SET last_NAME = L_EMP (I); EXCEPTION --BULK_ERRORS exception handler-- WHEN BULK_ERRORS THEN --Display the errors occurred during BULK DML transaction-- FOR J IN 1 .. SQL%BULK_EXCEPTIONS.COUNT LOOP DBMS_OUTPUT.PUT_LINE (CHR (10)); DBMS_OUTPUT.PUT_LINE ( 'Error in UPDATE: ' || SQL%BULK_EXCEPTIONS (J).ERROR_INDEX); DBMS_OUTPUT.PUT_LINE ( 'Error Code is: ' || SQL%BULK_EXCEPTIONS (J).ERROR_CODE); DBMS_OUTPUT.PUT_LINE('Error Message is: ' || SQLERRM('-' || SQL%BULK_EXCEPTIONS (J).ERROR_CODE)); END LOOP; END; / COMMIT /
आउटपुट
Error in UPDATE: 3 Error Code is: 1407 Error Message is: ORA-01407: cannot update () to NULL Error in UPDATE: 5 Error Code is: 1407 Error Message is: ORA-01407: cannot update () to NULL PL/SQL procedure successfully completed. Commit complete.
यह भी देखें:
- पीएल/एसक्यूएल में फाइल को ज़िप कैसे करें?
- पीएल/एसक्यूएल में किसी फाइल को अनजिप कैसे करें?
- Oracle उदाहरण में थोक संग्रह का चयन करें