標籤:time 聲明 read ini timeout sel -- 開啟 acl
--什麼是異常--異常是在PL/SQL運行過程中有可能出現的錯誤。--執行異常的語句exception when [異常] when --異常輸出資訊。--Oracle的預定義異常CASE_NOT_FOUND ora-06592 --case語句中,when子句沒有匹配的條件,而且沒有else語句,會觸發該異常。NO_DATA_FOUND ORA-01403 --select..into語句沒有返回記錄,觸發該異常TOO_MANY_ROWS ORA-01422--select..into語句返回記錄多於一條,觸發該異常DUP_VAL_ON_INDEX ORA-00001--表中唯一索引所對應的列上出現重複值時,引發該異常VALUE_ERROR ORA-06502--賦值時,如果變數長度不夠,引發該異常ZERO_DIVIDE ORA-01476--除數為零時引發的異常STORAGE_ERROR ORA-06500--內容溢出或破壞引發該異常TIMEOUT_ON_RESOURCE ORA-00051--等待資源逾時引發該異常CURSOR_ALREADY_OPEN ORA-06511--開啟一個已經開啟的遊標引發該異常--非預定義異常1、聲明一個異常的名稱。2、把這個異常名稱和異常的編號相關聯。--執行個體declarev_t varchar2(5);v_tt varchar2(3);tt_8899_exp exception;--聲明異常pragma exception_init(tt_8899_exp,-8899);--exception_init(異常名稱,異常代碼)beginv_t:=‘1111‘;case v_t when ‘222‘ then dbms_output.put_line(‘555‘); end case;exception when CASE_NOT_FOUND then dbms_output.put_line(‘字串超標‘); dbms_output.put_line(SQLERRM);--輸出異常資訊 dbms_output.put_line(SQLCODE);--輸出異常的代碼 rollback; end;--自訂異常declarev_t number(10);tt_8899_exp exception;--聲明異常pragma exception_init(tt_8899_exp,-8899);--exception_init(異常名稱,異常代碼)begin v_t:=-1; if v_t<0 then raise tt_8899_exp;--啟動自訂異常tt_8899_exp end if;exception when CASE_NOT_FOUND then dbms_output.put_line(SQLERRM);--輸出異常資訊 dbms_output.put_line(SQLCODE);--輸出異常的代碼 when tt_8899_exp then dbms_output.put_line(‘字串超標‘); dbms_output.put_line(SQLERRM);--輸出異常資訊 dbms_output.put_line(SQLCODE);--輸出異常的代碼 rollback; end;
Oracle的PL_SQL的異常處理