异常 |
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 |
程序尝试打开一个已经打开的游标。一个游标在重新打开之前必须关闭。一个游标FOR循环会自动打开它所引用的游标。所以,我们的程序不能在循环内部打开游标。 |
DUP_VAL_ON_INDEX |
ORA-00001 |
-1 |
程序尝试向一个有着唯一约束条件的数据库字段中保存重复值。 |
INVALID_CURSOR |
ORA-01001 |
-1001 |
程序尝试操作一个不合法的游标,例如关闭一个未打开的游标。 |
INVALID_NUMBER |
ORA-01722 |
-1722 |
在一个SQL语句中,由于字符串并不代表一个有效的数字,导致字符串向数字转换时会发生错误。(在过程化语句中,会抛出异常VALUE_ERROR。)当FETCH语句的LIMIT子句表达式后面不是一个正数时,这个异常也会被抛出。 |
LOGIN_DENIED |
ORA-01017 |
-1017 |
程序尝试使用无效的用户名和/或密码来登录Oracle。 |
NO_DATA_FOUND |
ORA-01403 |
100 |
SELECT INTO语句没有返回数据,或者是我们的程序引用了一个嵌套表中被删除了的元素或是索引表中未初始化的元素。SQL聚合函数,如AVG和SUM,总是能返回一个值或空。所以,一个调用聚合函数的SELECT INTO语句从来不会抛出NO_DATA_FOUND异常。FETCH语句最终会取不到数据,当这种情况发生时,不会有异常抛出的。 |
NOT_LOGGED_ON |
ORA-01012 |
-1012 |
程序没有连接到Oracle就要调用数据库。 |
PROGRAM_ERROR |
ORA-06501 |
-6501 |
PL/SQL程序发生内部错误。 |
ROWTYPE_MISMATCH |
ORA-06504 |
-6504 |
赋值语句中使用的主游标变量和PL/SQL游标变量的类型不兼容。例如,当一个打开的主游标变量传递到一个存储子程序时,实参的返回类型和形参的必须一致。 |
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 |
程序 |