內部定義的異常
內部定義的異常沒有名稱,但它有自己的程式碼。
什麼時候用?
如果你知道資料庫操作可能會引發那些沒有名稱的特定異常,那麼你可以為它們指定名稱,以便你可以專門為它們編寫異常處理程式。否則,你只能將它們與 others
異常處理程式一起使用。
句法
declare
my_name_exc exception;
pragma exception_init(my_name_exc,-37);
begin
...
exception
when my_name_exc then
do something
end;
my_name_exc exception;
即異常名稱宣告。
pragma exception_init(my_name_exc,-37);
將名稱分配給內部定義的異常的錯誤程式碼。
例
我們有一個 emp_id,它是 emp 表中的主鍵和 dept 表中的外來鍵。如果我們嘗試在有子記錄時刪除 emp_id,則會使用程式碼 -2292 丟擲異常。
create or replace procedure remove_employee
is
emp_exception exception;
pragma exception_init(emp_exception,-2292);
begin
delete from emp where emp_id = 3;
exception
when emp_exception then
dbms_output.put_line('You can not do that!');
end;
/
Oracle 文件說:“具有使用者宣告名稱的內部定義的異常仍然是內部定義的異常,而不是使用者定義的異常。”