PLSQL 異常處理

2021-08-30 20:42:46 字數 2211 閱讀 9460

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...