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

बयान उठाएँ

नहीं, समग्र रूप से ब्लॉक विफलता पर वापस लुढ़क जाएगा, लेकिन raise स्टेटमेंट अपने आप रोलबैक नहीं करता है।

उदाहरण के लिए, यह ब्लॉक विफल हो जाता है और परोक्ष रूप से वापस लुढ़क जाता है (बिल्कुल जैसे कि यह एक SQL insert था) आदि):

begin
    insert into demo(id) values(1);
    dbms_output.put_line(sql%rowcount || ' row inserted');
    raise program_error;
exception
    when program_error then raise;
end;

ERROR at line 1:
ORA-06501: PL/SQL: program error
ORA-06512: at line 6

SQL> select * from demo;

no rows selected

लेकिन यह ब्लॉक वापस नहीं लिया गया है, भले ही एक raise . है इसके अंदर:

begin
    begin
        insert into demo(id) values(1);
        dbms_output.put_line(sql%rowcount || ' row inserted');
        raise program_error;
    exception
        when program_error then
            dbms_output.put_line('Raising exception');
            raise;
    end;
exception
    when program_error then null;
end;

1 row inserted
Raising exception

PL/SQL procedure successfully completed.

SQL> select * from demo;

        ID
----------
         1

1 row selected.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में पैकेज के अंदर एक प्रक्रिया कैसे बनाएं

  2. plsql कोड से नए टैब में url पर रीडायरेक्ट करें

  3. Oracle SQL:नई पंक्तियों से परहेज करते हुए CSV को निर्यात करें

  4. ओरेकल जॉइन (+) के साथ लेफ्ट आउटर जॉइन या राइट आउटर जॉइन कैसे खोजें

  5. जावा में रिजल्टसेट ऑब्जेक्ट्स में कैसे शामिल हों?