Oracle PL SQL 異常錯誤處理

2021-07-30 15:18:38 字數 2263 閱讀 6035

異常情況處理(exception) 是用來處理正常執行過程中未預料的事件, 程式塊的異常處理預定義的錯誤 和 自定義錯誤, 由於 pl/sql 程式塊一旦產 生異常而沒有指出如何處理時, 程式就會自動終止整個程式執行.

異常錯誤可以分為三種型別:

1)預定義異常

2)非預定義異常

3)使用者自定義異常

這裡進行分別說明

例子:

set serveroutput on

declare

v_sal employees.salary%type;

begin

select e.salary into v_sal from employees e where e.department_id = 100;

dbms_output.put_line(v_sal);

exception

--預定義異常

when too_many_rows then dbms_output.put_line('得到的行數太多了!');

when others then dbms_output.put_line('出現其他型別錯誤!');

end;

/

結果:

首先必須對非定義的 oracle 錯誤進行定義。步驟如下:

1. 在 在 pl/sql 塊的定義部分定義異常情況:

《異常情況》 exception;

2. 將其定義好的異常情況,與標準的 oracle 錯誤聯絡起來,使用 pragma exception_init 語句:

pragma exception_init(< 異常情況》, < 錯誤**》);

3. 在pl/sql 塊的異常處理部分對異常情況做出相應處理。

例子:

set serveroutput on

declare

e_deleteid_exception exception;

pragma exception_init(e_deleteid_exception, -02292);

begin

delete from employees e where e.employee_id = 100;

exception

--非預定義異常

when e_deleteid_exception then dbms_output.put_line('違反完整約束條件!不可刪除此使用者。');

when others then dbms_output.put_line('出現其他型別錯誤!');

end;

/

當與乙個異常錯誤相關的錯誤出現時,就會隱含觸發該異常錯誤。 使用者定義的異常錯誤是通過顯式使用 raise 語句來觸發。當引發乙個異常錯誤時,控制就轉向exception 塊異常錯誤部分,執行錯誤處理**。

對於這類異常情況的處理,步驟如下:

1. 在 在 pl/sql 塊的定義部分定義異常情況:

< 異常情況》 exception;

2. raise < 異常情況》;

3. 在 pl/sql 塊的異常情況處理部分對異常情況做出相應的處理。

例子:

set serveroutput on

declare

e_too_low_sal exception;

v_sal employees.salary%type;

begin

select e.salary into v_sal from employees e where e.employee_id = 140;

if v_sal < 10000 then

raise e_too_low_sal;

end if;

exception

--使用者自定義異常

when e_too_low_sal then dbms_output.put_line('使用者工資低於10000。');

when others then dbms_output.put_line('出現其他型別錯誤!');

end;

/

Oracle PL SQL異常處理

case語句語法格式如下 case 變數 when 表示式1 then 值1 when 表示式2 then 值2 when 表示式n then 值n else 值n 1 end 1 使用case語句寫乙個pl sql塊,要求輸入員工編號,根據員工的職位進行工資提公升,提公升要求如下 如果職位是cle...

Oracle PL SQL異常處理

oracle的exception init編譯指令declare exception name exception pragma exception init exception name,error code 下面給乙個例項 declare v num number sv num v result...

ORACLE PLSQL 異常處理

例一 create table testerr id number 10 name varchar2 10 insert into testerr values 1,test insert into testerr values 2,test insert into testerr values 3...