close

列出比較常用的 Exception

異常
Oracle錯誤編號
SQLCODE值
簡單描述
 ACCESS_INTO_NULL
 ORA-06530
 -6530  程式嘗試為一個未初始化(自動賦為Null)對象的屬性給值
 CASE_NOT_FOUND
 ORA-06592
 -6592  CASE語句中沒有任何WHEN子句滿足條件,並且沒有編寫ELSE子句
 COLLECTION_IS_NULL
 ORA-06531
 -6531  程式嘗試調用一個未初始化(自動賦為Null)嵌套表或變長數組的集合方法(不包括EXISTS),或者是程式嘗試為一個未初始化嵌套表或變長數組的元素給值
 CURSOR_ALREADY_OPEN
 ORA-06511
 -6511  程式嘗試打開一個已經打開的Cursor。一個Cursor在重新打開之前必須關閉。一個游標FOR循環會自動打開它所引用的游標。所以,我們的程式不能在循環內部打開Cursor
 DUP_VAL_ON_INDEX
 ORA-00001
 -1  程式嘗試向一個有著Index的Table中保存重複Index值
 INVALID_CURSOR
 ORA-01001
 -1001  程式嘗試操作一個不合法的Cursor,例如關閉一個未打開的Cursor
 INVALID_NUMBER
 ORA-01722
 -1722  在一個SQL語句中,由於字串並不代表一個有效的數字,導致字串向數字轉換時會發生錯誤。(在過程化語句中,會拋出異常VALUE_ERROR)。當FETCH語句的LIMIT子句表達式後面不是一個正數時,這個異常也會被拋出
 LOGIN_DENIED
 ORA-01017
 -1017  程式嘗試使用無效的用戶名和/或密碼來登錄Oracle
 NO_DATA_FOUND
 ORA-01403
 100
 ELECT INTO語句沒有返回資料,或者是我們的程式引用了一個嵌套表中被刪除了的元素或是索引表中未初始化的元素。SQL聚合函數,如AVG和SUM,總是能返回一個值或空。所以,一個調用聚合函數的SELECT INTO語句從來不會拋出NO_DATA_FOUND異常。FETCH語句最終會取不到資料,當這種情況發生時,不會有異常拋出的
 NOT_LOGGED_ON
 ORA-01012
 -1012  程式沒有連接到Oracle就要調用資料庫
 PROGRAM_ERROR
 ORA-06501
 -6501  程式發生內部錯誤
 ROWTYPE_MISMATCH
 ORA-06504
 -6504  賦值語句中使用的主Cursor變量和PL/SQLCursor變量的類型不兼容。例如,當一個打開的主Cursor變量傳遞到一個存儲子程式時,實參的返回類型和形參的必須一致
 SELF_IS_NULL
 ORA-30625
 -30625
 程式嘗試調用一個空實例的MEMBER方法。也就是內置參數SELF(它總是第一個傳遞到MEMBER方法的參數)是空
 STORAGE_ERROR
 ORA-06500
 -6500  PL/SQL運行時內存溢出或內存不足
 SUBSCRIPT_BEYOND_COUNT
 ORA-06533
 -6533  程式引用一個嵌套表或變長數組元素,但使用的下標索引超過嵌套表或變長數組元素總個數
 SUBSCRIPT_OUTSIDE_LIMIT
 ORA-06532
 -6532  程式引用一個嵌套表或變長數組,但使用的下標索引不在合法的範圍內(如-1)
 SYS_INVALID_ROWID
 ORA-01410
 -1410  從字串向ROWID轉換發生錯誤,因為字串並不代表一個有效的ROWID
 TIMEOUT_ON_RESOURCE
 ORA-00051
 -51  當Oracle等待資源時,發生超時現象
 TOO_MANY_ROWS
 ORA-01422
 -1422  SELECT INTO語句返回多行資料
 VALUE_ERROR
 ORA-06502
 -6502  發生算術、轉換、截位或長度約束錯誤。例如,當我們的程式把一個字段的值放到一個字符變數中時,如果值的長度大於變數的長度,PL/SQL就會停止給值操作並拋出異常VALUE_ERROR。在過程化語句中,如果字串向數字轉換失敗,異常VALUE_ERROR就會被拋出。(在SQL語句中,異常INVALID_NUMBER會被拋出)
 ZERO_DIVIDE
 ORA-01476
 -1476  程式嘗試除以0

arrow
arrow
    全站熱搜

    Aloz 發表在 痞客邦 留言(1) 人氣()