Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Nâng cao tuyên bố

Không. Toàn bộ khối sẽ được khôi phục nếu không thành công, nhưng raise riêng câu lệnh không thực hiện khôi phục.

Ví dụ:khối này không thành công và hoàn toàn được khôi phục lại (chính xác như thể nó là một insert trong SQL vv):

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

Nhưng khối này không được khôi phục lại, mặc dù có raise bên trong nó:

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. Xác định và thiết lập phiên bản R12.2

  2. Cách triển khai Memcached được đồng bộ hóa với cơ sở dữ liệu

  3. thêm tháng vào SQL ngày tháng

  4. Triển khai OOPS trong Oracle

  5. Thay thế System.Data.OracleClient thành Oracle.DataAccess (ODP.NET)