ORACLE異常處理

2022-09-11 19:18:10 字數 1834 閱讀 2629

例一

create table testerr(id number(10),name varchar2(10));

insert into testerr values(1,'test');

insert into testerr values(2,'test');

insert into testerr values(3,'test1');

--no_data_found和too_many_rows是經常發生的異常,所以對於plsql寫這樣的異常捕獲是很好的

declare

a testerr%rowtype; --define a variable

begin

--這裡的異常**在自己的塊中,發生異常不會影響其他塊,只在本塊內處理掉了。

--如果將有異常**區的塊不捕獲異常,則自動傳播到外層塊。如果外層塊處理,則不會列印1,如果繼續

--不處理,則顯示丟擲。

begin

select * into a from testerr where name='test';

--start trap exception

exception

when no_data_found then

dbms_output.put_line('no data found in table testerr!');

when too_many_rows then

dbms_output.put_line('to many rows found in this query!'||sqlcode||','||sqlerrm);

when others then

dbms_output.put_line('others error occur!');

end;

begin

dbms_output.put_line(1);

end;

end;

--結果是:

to many rows found in this query!-1422,ora-01422: 實際返回的行數超出請求的行數

例二create table classes(id number(10) primary key,name varchar2(10));

create table classes_student(id number(10) primary key,name varchar2(10),

classes_id number(10) references classes(id));

insert into classes values(1,'s301');

insert into classes_student values(1,'dj',1);

commit;--系統非預定義異常

declare

cannot_dele exception;

--2292是違反完整性約束的錯誤

pragma exception_init(cannot_dele,-2292);

begin

delete from classes where id=1;

commit; --start exception handle

exception

when cannot_dele then

dbms_output.put_line('can''t delete classes_student!'||sqlcode||':'||sqlerrm);

end;

--can't delete classes_student!-2292:ora-02292: 違反完整約束條件 (dingjun123.sys_c0011750) - 已找到子記錄

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 返回資料行數過多自定義異常 實行彈窗的方式提示...