oracle 使用異常exception

風靈使發表於2018-09-26

異常

異常(exception)是一種PL/SQL識別符號,它用於處理PL/SQL程式的執行錯誤。Oracle提供了預定義異常、非預定義異常和自定義異常等三種異常型別,其中預定義異常用於處理常見的Oracle錯誤,非預定義異常用於處理預定義異常所不能處理的Oracle錯誤,自定義異常用於處理與Oracle錯誤無關的其他情況。

1.語法

  EXCEPTION
   WHEN exception1 [OR exception2...] THEN
    statement1;
    statement2;
    ...
   WHEN exception3 [ OR exception4...] THEN
    statement1;
    statement2;
    ...
   WHEN OTHERS THEN
    statement1;
    statement2;
    ...

2.預定義異常

2.1 說明

PL/SQL為開發人員提供了20多個預定義異常,每個預定義異常都對應一個Oracle錯誤。下面是常見的預定義異常:
(1)NO_DATA_FOUND :該異常對應於ORA-01403錯誤。當執行SELECT INTO未返回行,或者引用未初始化的PL/SQL表元素時,會隱含地觸發該異常。
(2)TOO_MANY_ROWS :該異常對應於ORA-01422錯誤。當執行SELECT INTO語句時,如果返回超過一行,則會觸發該異常。
(3)DUP_VAL_ON_INDEX :該異常對應於ORA-00001錯誤。當在惟一索引所對應的列上鍵入重複值時,會隱含觸發該異常。
(4)ZERO_DIVIDE :該異常對應ORA-01476錯誤。如果使用數字值除0,則會隱含觸發該異常。
(5)INVALID_CURSOR :該異常對應ORA-01001錯誤。當試圖在不合法的遊標上執行操作時,會隱含地觸發該異常。例如,從未開啟的遊標提取資料或者關閉未開啟的遊標,則會觸發該異常。

2.2 使用示例

在這裡插入圖片描述

3.非預定義異常

3.1 說明

當使用預定義異常時,只能處理21個Oracle錯誤。為了處理其他Oracle錯誤,必須使用非預定義異常。
使用步驟:
定義異常(e_integrity EXCEPTION)—>關聯異常和錯誤(PRAGMA EXCEPTION_INIT(e_integrity,-2291))—>引用異常(WHEN e_integrity THEN statement1...;

3.2 使用示例

在這裡插入圖片描述

4.自定義異常

4.1 說明

自定義異常與Oracle錯誤沒有任何關聯,它是由開發人員為特定情況所定義的異常。

使用步驟:
定義異常(e_no_employee EXCEPTION)—>顯式觸發異常(RAISE e_no_employee)—>引用異常(WHEN e_no_employee THEN statement1...;

4.2 使用示例

在這裡插入圖片描述

相關文章