前幾天看《Oracle PL/SQL Programming》的異常處理部分
Oracle 異常
具名Oracle異常
Oracle為此類異常預先指定了異常號
匿名Oracle異常
Oracle為此類異常預先指定了異常號
自定義異常
普通自定義異常
與Oracle無關的業務邏輯異常
應用程序異常(Raise_Application_Error)
與Oracle無關的業務邏輯異常
Oracle異常總是由Oracle檢測並自動拋出的
Oracle定義了
Dup_val_on_index(ora
No_data_found(ora
流程
A)在Exception模塊按異常名進行處理
示例
DECLARE
num number;
BEGIN
num:=
EXCEPTION
when ZERO_DIVIDE then
dbms_output
END;
/
ORA
PL/SQL procedure successfully completed
Oracle中存在大量匿名的異常
ORA
由於PL/SQL的異常處理模塊只接受異常名稱
流程
A)聲明異常
B)將此異常綁定到Oracle異常號上
C)在Exception模塊按異常名進行處理
示例
DECLARE
ex EXCEPTION;
PRAGMA EXCEPTION_INIT(ex
BEGIN
insert into t
EXCEPTION
when ex then
dbms_output
END;
/
ORA
PL/SQL procedure successfully completed
自定義異常總是開發者顯式拋出來的
流程
A)聲明異常
B)使用Raise語句拋出異常
C)在Exception模塊按異常名進行處理
示例
DECLARE
ex EXCEPTION;
BEGIN
RAISE ex;
EXCEPTION
when ex then
dbms_output
dbms_output
END;
/
User
i raised a user
普通自定義異常既沒有異常號(SQLCODE一律為
對於此類異常
流程
A)聲明異常
B)將此異常綁定到自定義的異常號上
C)使用Raise_Application_Error(Num
D)在Exception模塊按異常名進行處理
示例
CREATE OR REPLACE PROCEDURE mtest
is
ex EXCEPTION;
PRAGMA EXCEPTION_INIT(ex
BEGIN
Raise_Application_Error(
EXCEPTION
when ex then
dbms_output
END;
/
Procedure created
SQL> exec mtest
ORA
PL/SQL procedure successfully completed
From:http://tw.wingwit.com/Article/program/Oracle/201311/18175.html