ORACLE 過程中容錯處理

2021-05-05 17:33:15 字數 1674 閱讀 6286

1) 基本結構

begin

... --語句

exception -- 例外處理

when ...

...when others

...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 -- 其它任何錯誤的處理

...end;

3) 使用者定義的例外

declare

find_data_emp    exception;

begin

if ... then

raise find_data_emp;

end if;

exception

when lob_no_locked then

...end;

4) exception_init的使用

pragma exception_init(例外名, oracle錯誤號);

注:pragma 是乙個編譯器命令,可以認為是對編譯器的乙個注釋。

例:declare

zero_divide1    exception;

pragma exception_init(zero_divide1, -1476);

begin

...exception

when zero_divide1 then

...end;

mysql 容錯處理 詞典及容錯處理

在前面幾篇文章中都是在講倒排索引的結構,及合併優化方法.這篇博文裡更多談下怎麼根據輸輸入查詢引數來定位到倒排記錄表的指標.其實這跟mysql中對varchar型別加索引後,然後基於該欄位查詢的原理一樣,都是可以基於b tree的經典資料結構來快速定位.mysql中基於記憶體表還可以用hash索引,同...

SparkRDD容錯處理

rdd不同的依賴關係 寬依賴 窄依賴 是spark rdd有不同的容錯處理方式 對spark框架層面容錯機制的三大層面 排程層 rdd血統層 checkpoint層 和spark rdd容錯四大核心要點。1 spark rdd容錯原理 rdd的不同依賴關係導致spark對不同的依賴關係有不同的處理方...

詞典及容錯處理

在前面幾篇文章中都是在講倒排索引的結構,及合併優化方法.這篇博文裡更多談下怎麼根據輸輸入查詢引數來定位到倒排記錄表的指標.其實這跟mysql中對varchar型別加索引後,然後基於該欄位查詢的原理一樣,都是可以基於b tree的經典資料結構來快速定位.mysql中基於記憶體表還可以用hash索引,同...