oracle学习之:常用预定义异常

  
转自http://linux.net527.cn/fuwuqiyingyong/Oracle/2012/0508/46898.html
异常 Oracle错误号 SQLCODE值
ACCESS_INTO_NULL ORA-06530 -6530
CASE_NOT_FOUND ORA-06592 -6592
COLLECTION_IS_NULL ORA-06531 -6531
CURSOR_ALREADY_OPEN ORA-06511 -6511
DUP_VAL_ON_INDEX ORA-00001 -1
INVALID_CURSOR ORA-01001 -1001
INVALID_NUMBER ORA-01722 -1722
LOGIN_DENIED ORA-01017 -1017
NO_DATA_FOUND ORA-01403 100 --目前只发现no_data_found异常的错误号同sqlcode值是不同的,请注意
NOT_LOGGED_ON ORA-01012 -1012
PROGRAM_ERROR ORA-06501 -6501
ROWTYPE_MISMATCH ORA-06504 -6504
SELF_IS_NULL ORA-30625 -30625
STORAGE_ERROR ORA-06500 -6500
SUBSCRIPT_BEYOND_COUNT ORA-06533 -6533
SUBSCRIPT_OUTSIDE_LIMIT ORA-06532 -6532
SYS_INVALID_ROWID ORA-01410 -1410
TIMEOUT_ON_RESOURCE ORA-00051 -51
TOO_MANY_ROWS ORA-01422 -1422
VALUE_ERROR ORA-06502 -6502
ZERO_DIVIDE ORA-01476 -1476
 
预定义异常的简要描述:
异常 抛出时机
ACCESS_INTO_NULL 程序尝试为一个未初始化(自动赋为null)对象的属性赋值。
CASE_NOT_FOUND CASE语句中没有任何WHEN子句满足条件,并且没有编写ELSE子句。
COLLECTION_IS_NULL 程序尝试调用一个未初始化(自动赋为null)嵌套表或变长数组的集合方法(不包括EXISTS),或者是程序尝试为一个未初始化嵌套表或变长数组的元素 赋值。
CURSOR_ALREADY_OPEN 程序尝试打开一个已经打开的游标。一个游标在重新打开之前必须关闭。一个游标FOR循环会自动打开它所引用的游标。所以,我们的程序不能在循环内部打开游 标。
DUP_VAL_ON_INDEX 程序尝试向一个有着唯一约束条件的数据库字段中保存重复值。
INVALID_CURSOR 程序尝试操作一个不合法的游标,例如关闭一个未打开的游标。
INVALID_NUMBER 在一个SQL语句中,由于字符串并不代表一个有效的数字,导致字符串向数字转换时会发生错误。(在过程化语句中,会抛出异常VALUE_ERROR。)当 FETCH语句的LIMIT子句表达式后面不是一个正数时,这个异常也会被抛出。
LOGIN_DENIED 程序尝试使用无效的用户名和/或密码来登录Oracle。
NO_DATA_FOUND SELECT INTO语句没有返回数据,或者是我们的程序引用了一个嵌套表中被删除了的元素或是索引表中未初始化的元素。SQL聚合函数,如AVG和SUM,总是能返 回一个值或空。所以,一个调用聚合函数的SELECT INTO语句从来不会抛出NO_DATA_FOUND异常。FETCH语句最终会取不到数据,当这种情况发生时,不会有异常抛出的。
NOT_LOGGED_ON 程序没有连接到Oracle就要调用数据库。
PROGRAM_ERROR PL/SQL程序发生内部错误。
ROWTYPE_MISMATCH 赋值语句中使用的主游标变量和PL/SQL游标变量的类型不兼容。例如,当一个打开的主游标变量传递到一个存储子程序时,实参的返回类型和形参的必须一 致。
SELF_IS_NULL 程序尝试调用一个空实例的MEMBER方法。也就是内置参数SELF(它总是第一个传递到MEMBER方法的参数)是空。
STORAGE_ERROR PL/SQL运行时内存溢出或内存不足。
SUBSCRIPT_BEYOND_COUNT 程序引用一个嵌套表或变长数组元素,但使用的下标索引超过嵌套表或变长数组元素总个数。
SUBSCRIPT_OUTSIDE_LIMIT 程序引用一个嵌套表或变长数组,但使用的下标索引不在合法的范围内(如-1)。
SYS_INVALID_ROWID 从字符串向ROWID转换发生错误,因为字符串并不代表一个有效的ROWID。
TIMEOUT_ON_RESOURCE 当Oracle等待资源时,发生超时现象。
TOO_MANY_ROWS SELECT INTO语句返回多行数据。
VALUE_ERROR 发生算术、转换、截位或长度约束错误。例如,当我们的程序把一个字段的值放到一个字符变量中时,如果值的长度大于变量的长度,PL/SQL就会终止赋值操 作并抛出异常VALUE_ERROR。在过程化语句中,如果字符串向数字转换失败,异常VALUE_ERROR就会被抛出。(在SQL语句中,异常 INVALID_NUMBER会被抛出。)
ZERO_DIVIDE 程序尝试除以0。

你可能感兴趣的:(oracle预定义异常)