oracle 常见错误

异常 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 程序

posted on 2015-09-17 11:47  选择大于努力  阅读(365)  评论(0编辑  收藏  举报

导航