1. 程式人生 > >Oracle PL/SQL開發基礎(第三十四彈:RAISE_APPLICATION_ERROR)

Oracle PL/SQL開發基礎(第三十四彈:RAISE_APPLICATION_ERROR)

RAISE_APPLICATION_ERROR在子程式內部使用時,能從儲存子程式中丟擲自定義的錯誤訊息。這樣就能將錯誤報告給應用程式而避免範圍未捕獲異常。

語法如下:

RAISE_APPLICATION_ERROR(error_number, error_message, [keep_errors]);

error_number是範圍在-20000到-20999之間的負整數,error_message是最大長度為2048位元組的字串,keep_errors是一個可選的布林值,True表示新的錯誤將被新增到已經丟擲的錯誤列表中,False表示新的錯誤將替換當前的錯誤列表,預設為False。

RAISE_APPLICATION_ERROR

只能在儲存的子程式中呼叫。當被呼叫時,將結束當前的子程式並返回一個使用者自定義的錯誤程式碼和錯誤訊息給應用程式,這些錯誤程式碼和錯誤訊息可以像任何的Oracle錯誤一樣被捕獲。

看一個例子:

CRAETE OR REPLACE PROCEDURE  registeremployee(...)
AS
    ...
BEGIN
    IF ... THEN
        RAISE_APPLICATION_ERROR(-20000, '員工編號不能為空');
    ELSIF ... THEN
        RAISE_APPLICATION_ERROR(-20001, '員工已存在');
    END IF;
    ...
EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20003, '插入資料時出現錯誤!異常編碼:' || SQLCODE || '異常描述:' || SQLERRM); END;

別的子程式或語句塊呼叫這個過程時,如果有相應的異常,就會像普通的Oracle錯誤一樣被捕獲。