**:
異常處理是針對系統中發生的各種錯誤所採取的處理措施。
pl/sql塊中的異常處理
sql**
exception
when first_exception then
first exception>
when second_exception then
second exception>
when others then
在異常處理中,用來獲取異常**和完整錯誤提示資訊的兩個子系統函式是sqlcode和sqlerrm。
對系統內部異常可通過sqlcode返回乙個oracle錯誤編碼號。sqlcode返回的編號除了「ora_01403沒發現資料」是正值之外,其他的都是負值。
sqlerrm則返回異常**相對應的錯誤資訊。對使用者定義的異常,sqlcode返回+1而且sqlerrm返回「使用者定義異常」。如果沒有異常發生,操作正常執行,則sqlcode返回0,sqlerrm返回資訊「ora_0000:正常,成功完成」。
非預定義的oracle異常
pragma exception_init(,)
在pl*sql中,pragma exception_init告訴編譯器將乙個oracle錯誤編號與異常名建立起來
sql**
pragma exception_init的用法
declare
e_emp_remaining exception;
pragma exception_init(e_emp_remaining ,-2292);
begin
delete
from dept where deptno=10;
commit;
exception
when (e_emp_remaining then
dbms_output.put_line('cannot remove dept'||to_char(10)||'.employee exist.');
end;
使用者自定義異常
sql**
declare
v_eno emp.empno%type :=&.empno;
not_found exception;
begin
update emp set sal=sal*1.1 where empno=v_eno;
if sql% notfound then
raise not_found// 使用raise語句丟擲異常
end if;
exception
when not_found then
dbms_output.put_line('you can't update the sal,the number does not!exist!');
when others then
dbms_output.put_line('other other');
end
sql**
裡面的錯誤**和內容,都是自定義的。說明是自定義,當然就不是系統中已經命名存在的錯誤類別,是屬於一種自定義事務錯誤型別,才呼叫此函式。
error_number_in 之容許從 -20000 到 -20999 之間,這樣就不會與 oracle 的任何錯誤**發生衝突。
error_msg_in 的長度不能超過 2k,否則擷取 2k。
舉個例吧:
阻止小於18歲的使用者增加到資料庫 employee 表中
sql**
create
or repalce trigger minimun_age_check
before insert
on employee
for each row
begin
if add_months( :new.birth_date, 18*12) > sysdate
then
end if;
end;
在客戶端,你可以寫乙個類似下面的程式,來測試一下。
sql**
declare
no_babies_allowed exception;
/*將名稱與用於觸發器中的錯誤號碼關聯起來*/
pragma exception_init(no_babies_allowed, -20001);
begin
insert
into employee ....;
exception
when no_babies_allowed
then
/*
*/
dbms_output.put_line(sqlerrm);
end;
將異常作為控制語句
因為引發異常會將程式的控制邏輯轉移到**塊的異常處理部分,所以可以將raise語句用作控制語句,就像goto語句一樣。例如,如果我們有很深的巢狀迴圈,並需要立即從中退出的時候,這可能會非常有用。
oracle異常處理明細(個人簡單總結)
異常處理是針對系統中發生的各種錯誤所採取的處理措施。pl sql塊中的異常處理 sql exception when first exception then first exception when second exception then second exception when other...
ORACLE 異常處理
一 開發pl sql程式時,需要考慮到程式執行時可能出現的各種異常,當異常出現時,或是中斷程式執行,或是使程式從錯誤中恢復,從而繼續執行。常用的異常型別有 no data found 沒有發現資料 too many rows select into 語句查詢結果有多個資料行 others 可以捕捉所...
Oracle 異常處理
1 什麼是異常 在pl sql 中的乙個警告或錯誤的情形都可被稱為異常。包括編譯時錯誤 pls 和執行時錯誤 ora 乙個異常通常包含乙個錯誤 和錯誤文字,分別指示異常的編號和具體錯誤資訊。異常情況處理 exception 是用來處理正常執行過程中未預料的事件,程式塊的異常處理預定義的錯誤和自定義錯...