1. 異常塊
begin
《pl/sql塊》;
exception
when no_data_found then --沒有找到資料
《響應命令》;
when too_many_rows then --返回多行,隱式游標每次只能檢索一行資料
《響應命令》;
when invalid_number then --字元向數字轉換失敗
《響應命令》;
when zero_divide then --被零除
《響應命令》;
when dup_val_on_index then --向唯一索引中插入重複資料
《響應命令》;
when invalid_cursor then --非法游標操作
《響應命令》;
when value_error then --數字的,資料轉換,截字串或強制性的錯誤
《響應命令》;
when others then --發生其它任何錯誤
null; --選擇一:什麼也不做,就當錯誤沒發生
raise form_trigger_failure; --選擇二:掛起當前程式
end;
2.常用預定義例外
exception
when cursor_already_open then -- ora-06511 sqlcode = -6511 游標已經開啟
..when dup_val_on_index then -- ora-00001 sqlcode = -1 向唯一索引中插入重複資料
..when invalid_cursor then -- ora-01001 sqlcode = -1001 非法游標操作
..when invalid_number then -- ora-01722 sqlcode = -1722 字元向數字轉換失敗
..when login_denied then -- ora-01017 sqlcode = -1017
..when no_data_found then -- ora-01403 sqlcode = +100 沒有找到資料
..when not_logged_on then -- ora-01012 sqlcode = -1012
..when program_error then -- ora-06501 sqlcode = -6501 程式錯誤
..when storage_error then -- ora-06500 sqlcode = -6500
..when timeout_on_resource then -- ora-00051 sqlcode = -51
..when too_many_rows then -- ora-01422 sqlcode = -1422 返回多行
..when transaction_backed_out then -- ora-00061 sqlcode = -61
..when value_error then -- ora-06502 sqlcode = -6502 數值轉換錯誤
..when zero_divide then -- ora-01476 sqlcode = -1476 被零除
..when others then -- 其它任何錯誤的處理
3.獲取異常資訊
declare
v_errcode number;
v_errmsg varchar2(100);
...../省略
commit; --當沒有異常的情況下,可以提交
exception
when others then --在有異常的情況下,怎麼樣得到異常資訊了?
v_errcode :=sqlcode;
v_errmsg := substr(sqlerrm,1,100);
dbms_output.put_line('error code is' || v_errcode || ' error message is' || v_errmsg)
rollback; --回滾
returnvalue := 'false';
end;
pl sql異常處理
丟擲異常 oracle有三種型別的異常錯誤 1 預定義 predefined 異常 oracle預定義的異常情況大約有24個。對這種異常情況的處理,無需在程式中定義,由oracle自動將其引發。2 非預定義 predefined 異常 即其他標準的oracle錯誤。對這種異常情況的處理,需要使用者在...
plsql異常處理
1.在plsql 中 形式引數和 where 語句中的引數不能一樣,否則的話就就會出現個中莫名其妙的錯誤。function validate import supplier p task seq in number,任務號 p line num in number,行號 p vendor name ...
PL SQL異常處理
pl sql提供了良好的異常處理機制,當程式執行出現錯誤時就會觸發異常。異常被觸發時,程式執行即終止,在pl sql塊中提供了異常處理的部分,從而可以捕獲乙個異常進行特殊處理。嚴格意義上來講,乙個完整的pl sql塊應該具有以下結構 declare declare variables begin e...