PL/SQL 08 異常 exception

j04212發表於2014-02-12

--PL/SQL錯誤
  編譯時
  執行時

--執行時的出錯處理

  EXCEPTION


--異常處理塊

DECLARE
 …
BEGIN
 …
EXCEPTION
 WHEN OTHERS THEN
  handler_error(…);
END;


--使用者自定義的異常

DECLARE
 e_TooManyStudents EXCEPTION;
 …
BEGIN
 …
 RAISE e_TooManyStudents;
 …
EXCEPTION
 WHEN e_TooManyStudents THEN
  …
END;


--預定義的ORACLE異常

ORA-0001
  DUP_VAL_ON_INDEX
ORA-0051
  TIMEOUT_ON_RESOURCE
ORA-1001
  INVALID_CURSOR

ORA-6533
  SUBSCRIPT_BEYOND_COUNT


--觸發異常

RAISE exception_variable
DECLARE
  A EXCEPTION
BEGIN
  …
  RAISE A;
  …
  EXCEPTION
    WHEN A THEN
    …
END;


--處理異常

EXCEPTION
  WHEN e_TooManyStudents THEN
    INSERT INTO log_file(info)
    VALUES(‘Major 1100 has ‘ || v_CurStudents || ’ max aloowed is ‘ || v_Max);
END;


--處理所有的異常

EXCEPTION
  WHEN e_TooManyStudents THEN
    …
  WHEN OTHERS THEN
    v_ErrCode := SQLCODE;
    v_ErrText := SUBSTR(SQLERRM, 1, 200);
    INSERT INTO log_file(code, message, info)
    VALUES(v_ErrCode, v_ErrText, ‘ORACLE Error’);
END;

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27633655/viewspace-1080408/,如需轉載,請註明出處,否則將追究法律責任。

相關文章