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