oracle異常處理

2021-08-30 03:46:40 字數 1713 閱讀 4171

異常處理是針對系統中發生的各種錯誤所採取的處理措施。

pl/sql塊中的異常處理

exception 

when first_exception then

when second_exception then

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錯誤編號與異常名建立起來

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;

使用者自定義異常

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

裡面的錯誤**和內容,都是自定義的。說明是自定義,當然就不是系統中已經命名存在的錯誤類別,是屬於一種自定義事務錯誤型別,才呼叫此函式。

error_number_in 之容許從 -20000 到 -20999 之間,這樣就不會與 oracle 的任何錯誤**發生衝突。

error_msg_in 的長度不能超過 2k,否則擷取 2k。

舉個例吧:

阻止小於18歲的使用者增加到資料庫 employee 表中

在客戶端,你可以寫乙個類似下面的程式,來測試一下。

ORACLE 異常處理

一 開發pl sql程式時,需要考慮到程式執行時可能出現的各種異常,當異常出現時,或是中斷程式執行,或是使程式從錯誤中恢復,從而繼續執行。常用的異常型別有 no data found 沒有發現資料 too many rows select into 語句查詢結果有多個資料行 others 可以捕捉所...

Oracle 異常處理

1 什麼是異常 在pl sql 中的乙個警告或錯誤的情形都可被稱為異常。包括編譯時錯誤 pls 和執行時錯誤 ora 乙個異常通常包含乙個錯誤 和錯誤文字,分別指示異常的編號和具體錯誤資訊。異常情況處理 exception 是用來處理正常執行過程中未預料的事件,程式塊的異常處理預定義的錯誤和自定義錯...

Oracle 異常處理

異常處理 處理程式不可意料的操作,防止程式崩潰,起到友好提示 語法 exception when 異常型別 then 異常處理 異常型別 處理相關的異常 others 處理所有的異常 no data found 沒有找到資料 too many rows 返回資料行數過多自定義異常 實行彈窗的方式提示...