在設(shè)計PL/SQL程序時,經(jīng)常會發(fā)生這樣或那樣的錯誤,異常處理就是針對錯誤進(jìn)行處理的程序段,Oracle 9i中的異常處理分為系統(tǒng)預(yù)定義異常處理和自定義異常處理兩部分,
PL/SQL異常處理
。系統(tǒng)預(yù)定義異常處理
系統(tǒng)預(yù)定義異常處理是針對PL/SQL程序編譯、執(zhí)行過程中發(fā)生的問題進(jìn)行處理的程序。 下列代碼為正確代碼,在【SQLPlus Worksheet】中能夠順利執(zhí)行。
―――――――――――――――――――――――――――――――――――――
set serveroutput on
declare
tempno integer:=90;
begin
tempno:=tempno+1;
end;
―――――――――――――――――――――――――――――――――――――
【配套程序位置】:第9章\ correctplsql.sql。
下列代碼為錯誤代碼,在【SQLPlus Worksheet】中的執(zhí)行結(jié)果如圖9.56所示。
【配套程序位置】:第9章\ wrongplsql.sql。
由于代碼有錯誤,因此將激活系統(tǒng)預(yù)定義的異常處理,并得出如下提示信息,
電腦資料
《PL/SQL異常處理》(http://www.msguai.com)。Oracle 9i提供了很多異常處理,讀者可以嘗試修改可以正常運行的程序,并執(zhí)行修改后的程序,就可以發(fā)現(xiàn)調(diào)用了哪些異常處理,下面著重介紹如何自定義異常處理。
自定義異常處理
1.定義異常處理
定義異常處理的語法如下:
declare
異常名 exception;
2.觸發(fā)異常處理
觸發(fā)異常處理的語法如下:
raise 異常名;
3.處理異常
觸發(fā)異常處理后,可以定義異常處理部分,語法如下:
Exception
When 異常名1 then
異常處理語句段1;
When 異常名2 then
異常處理語句段2;
4.實例
下面的PL/SQL程序包含了完整的異常處理定義、觸發(fā)、處理的過程。定義名為salaryerror的異常,在scott.emp數(shù)據(jù)表中查找empno=7566的記錄,將其值放入變量tempsal中,判斷tempsal值若不在900和2600之間,說明該員工的薪水有問題,將激活異常處理,提示信息。
在【SQLPlus Worksheet】中執(zhí)行下列PL/SQL代碼,執(zhí)行結(jié)果如圖9.57所示。
【配套程序位置】:第9章\ exceptiondefine.sql。