oracle異常處理 例解

2021-04-25 17:50:41 字數 2338 閱讀 9179

異常處理是用來處理正常執行過程中未預料的事件。如果pl/sql程式塊一旦產生異常而又沒有指出如何處理時,程式會自動終止。

異常處理部分放在pl/sql的後半部分,結構為:

exception

when first_exception then

when second_exception then

when others then>     --others必須放在最後

異常分為預定義和使用者定義兩種。

使用者定義的異常是通過顯式使用raise語句來引發。如

declare

e_toomanystudents exception;  -- 型別為exception,用於指示錯誤條件

v_currentstudents number(3);  -- his-101學生註冊當前號

v_maxstudents number(3);      -- his-101學生註冊允許的最大號

begin

/* 找出註冊學生當前號和允許的最大號 */

select current_students, max_students

into v_currentstudents, v_maxstudents

from classes

where department = 'his' and course = 101;

/* 檢查學生的號 */

if v_currentstudents > v_maxstudents then

/* 太多的學生註冊,則觸發例外處理 */

raise e_toomanystudents;

end if;

exception

when e_toomanystudents then

/* 當太多的學生註冊,就插入資訊解釋發生過錯誤 */

insert into log_table (info) values ('history 101 has ' || v_currentstudents ||

'students: max allowed is ' || v_maxstudents);

end;

end;

error_number是從-20000到-20999之間的引數;

error_message是相應的提示資訊,小於512位元組。如:

create or replace procedure register (

p_studentid in students.id%type,

p_department in classes.department%type,

p_course in classes.course%type) as

v_currentstudents number;  --

班上學生的當前號

v_maxstudents number;      --

班上學生的最大號

begin

/* 找出學生的當前號和最大號 */

select current_students, max_students

into v_currentstudents, v_maxstudents

from classes

where course = p_course

and department = p_department;

/* 確認另外的學生是否有足夠的教室

*/if v_currentstudents + 1 > v_maxstudents then

p_department || ' ' || p_course);

end if;

/* 加乙個學生在本班

*/classpackage.addstudent(p_studentid, p_department, p_course);

exception

when no_data_found then

' doesn''t exist!');

end register;

end loop;

close c_kilo_group;

return(result);

end f_kilorar;

oracle內建函式sqlcode和sqlerrm是特別用在others處理器中,分別用來返回oracle的錯誤**和錯誤訊息。在乙個內在的異常中,sqlcode返回oracle錯誤的序號,而sqlerrm返回的是相應的錯誤訊息,錯誤訊息首先顯示的是錯誤**。sqlcode返回的是負數,除非oracle的錯誤為「ora-01403:no data found」(譯:ora-01403:未找到資料),當oracle錯誤為「ora-01403:no data found」時,其對應的sqlcode為+100。

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