在設計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。
新聞熱點
疑難解答