PL SQL常用例外

2021-06-08 17:13:20 字數 3385 閱讀 9187

oracle pl/sql 例外處理

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;

oracle pl/sql 例外處理

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

...

例外處理 PL SQL

預定義例外 處理常見的oracle錯誤 no data found 編寫乙個塊,輸入雇員的編號,並顯示改雇員的姓名 如果雇員的編號不存在,怎樣去處理?declare v name varchar2 50 begin select ename into v name from emp where em...

PL SQL程式之例外

什麼是例外?例外是程式語言提供的一種功能,用來增強程式的健壯性和容錯性 oracle的異常處理 系統定義例外 no data found 沒有找到資料 too many rows select into語句匹配多個行 zero divide 被零除 value error 算術或轉換錯誤 timeo...

PL SQL 例外(異常) exception

異常是程式語言提供的一種功能,用來增強程式的健壯性和容錯性。1.系統定義異常 no data found 沒有找到資料 too many rows select into語句匹配多個行 zero divide 被零除 value error 算術或轉換錯誤 timeout on resource 在...