1. 程式人生 > >Oracle PL/SQL異常處理(非預定義錯誤)

Oracle PL/SQL異常處理(非預定義錯誤)

非預定義錯誤

非預定義錯誤即其他標準的Oracle錯誤。對於這種異常情況的處理,需

要使用者在程式中定義,然後由Oracle自動將其引發。
對於這類異常情況的處理,首先必須對非定義的Oracle錯誤進行定義,

步驟如下。
1)在PL/SQL塊的定義部分定義異常情況:
<異常情況> EXCEPTION;
2)將其定義好的異常情況,與標準的Oracle錯誤聯絡起來,使用
EXCEPTION_INIT語句:
PRAGMA EXCEPTION_INIT(<異常情況>,<錯誤程式碼>);
3)在PL/SQL塊的異常情況處理部分對異常情況做出相應的處理:

需求:修改編寫為7788的僱員所屬的部門編號為99。
DECLARE
  e_integrity EXCEPTION;
  PRAGMA EXCEPTION_INIT(e_integrity,-2291);
  --2291為Oracle定義的錯誤號,違背了完整性約束條件
BEGIN
  UPDATE emp SET deptno = 99 WHERE empno = 7788;
  EXCEPTION
    WHEN e_integrity THEN
      Dbms_Output.put_line('該部門不存在');
END;

備註:

RAISE_APPLICATION_ERROR儲存過程,可以重新定義異常錯誤訊息,它為應用程式提供了一種與Oracle互動的方法。
RAISE_APPLICATION_ERROR的語法:
RAISE_APPLICATION_ERROR(error_number,error_message);
在語法中:
error_number表示使用者為異常指定的編號。該編號必須是介於-20000~-20999之間的負整數。
error_message表示使用者為異常指定的訊息文字。訊息長度可長達2048位元組。錯誤訊息是與error_number表示關聯的文字。