PLSQL中的異常處理

2021-08-26 14:52:16 字數 2097 閱讀 7753

plsql中的異常一般有兩種:

1、oracle 內部錯誤丟擲的異常:這又分為預定義異常(有錯誤號+常量定義) 和 非預定義例外 (僅有錯誤號,無常量定義)

2、程式設計師顯式的丟擲的異常

處理預定義的例外:有些常見例外,oracle 都已經預定義好了,使用時無需預先宣告,比如:

–no_data_found (沒找到資料)

–too_many_rows (列數超過範圍)

–invalid_cursor

–zero_divide (被除數不能為0)

–dup_val_on_index

-value_error (資料賦值錯誤)

丟擲異常:

declare

v_data number;

v_myexp exception; --定義乙個異常變數

begin

v_data :=&inputdata; --輸入資料

if v_data>10 and v_data<100 then

raise v_myexp;

處理異常:

使用exception處理異常:

例如處理被除數為0的異常:

declare

v_result number;

begin

v_result:=10/0;

dbms_output.put_line('異常之後的**將不再執行!');

exception

when zero_divide then

dbms_output.put_line('被除數不能為0!');

when others then

dbms_output.put_line('其他未知異常');

rollback;

v_error_code := sqlcode ;

v_error_message := sqlerrm ;

end;

發生這種情況時,我們還是希望了解當時發生的oracle錯誤號和相關描述資訊,oracle 提供了兩個內建函式 sqlcode 和 sqlerrm 分別用來返回oracle 錯誤號和錯誤描述

注意:1.異常之後的**將不再執行

2.異常可以巢狀

3.異常未處理會往外一層丟擲

others的處理: others表明我們程式設計師未能預計到這種錯誤,所以全部歸入到others 裡面去了

自定義異常:

方式一:在宣告塊中宣告exception物件,此方式有兩種選擇:

1.宣告異常物件並用名稱來引用它,此方式使用普通的others異常捕獲使用者定義異常;

2.宣告異常物件並將它與有效的oracle錯誤**對映,需要編寫單獨的when語句塊捕獲;

例如:declare

v_data number;

v_myexp exception; --定義乙個異常變數

begin

v_data :=&inputdata; --輸入資料

if v_data>10 and v_data<100 then

raise v_myexp;

end if;

exception

when v_myexp then

dbms_output.put_line('輸入資料有錯誤1');

dbms_output.put_line('sqlcode='||sqlcode);

dbms_output.put_line('sqlerrm='||sqlerrm);

end;

declare

v_data number;

v_myexp exception; --定義乙個異常變數

begin

v_data :=&inputdata; --輸入資料

if v_data>10 and v_data<100 then

end if;

exception

when v_myexp then

dbms_output.put_line('輸入資料有錯誤1');

dbms_output.put_line('sqlcode='||sqlcode);

dbms_output.put_line('sqlerrm='||sqlerrm);

PL SQL中的異常處理

pl sql 程式在執行的過程當中,可能會出現錯誤或者異常的情況,例如無法建立與oracle的連線,或者返回多行的錯誤。好的程式應該是對可能發生的異常情況進行處理,異常處理 在exception中實現。可以在exception塊中使用when語句來定義異常處理。when語句的使用方法如下 excep...

pl sql異常處理

丟擲異常 oracle有三種型別的異常錯誤 1 預定義 predefined 異常 oracle預定義的異常情況大約有24個。對這種異常情況的處理,無需在程式中定義,由oracle自動將其引發。2 非預定義 predefined 異常 即其他標準的oracle錯誤。對這種異常情況的處理,需要使用者在...

PLSQL 異常處理

1.異常塊begin pl sql塊 exception when no data found then 沒有找到資料 響應命令 when too many rows then 返回多行,隱式游標每次只能檢索一行資料 響應命令 when invalid number then 字元向數字轉換失敗 響...