oracle学习之:常用预定义异常
2012-11-20 15:21
260 查看
转自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错误号 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学习之:常用预定义异常
- Oracle 10g处理例外(即sql异常)学习二——自定义例外和非预定义例外
- Oracle 10g处理例外(即sql异常)学习一——预定义例外,即常见例外
- Oracle常用预定义异常
- 最常用Oracle 命令集合 学习oracle很有帮助!
- Oracle基础学习四之表的定义及脚本编写二
- oracle学习 十一 包+复合类型+自定义异常(持续更新)
- oracle学习笔记 ---- 常用系统函数
- Oracle学习之常用对象(二)—触发器&游标&函数
- 异常、错误-oracle 11g PL/SQL Programming学习三-by小雨
- ORACLE学习之路--常用表空间操作指令集
- Mybatis学习之路之Oracle建/改/删表以及一些常用命令<一>
- Oracle预定义的21个系统异常类型
- 【Oracle 学习笔记】Day 1 常用函数整理(转换、DeCode),表的外键
- Oracle学习(8)--Linux系统的VI编辑器常用命令、linux中使用ftp上传文件
- ORACLE学习第七篇(常用处理函数)
- oracle 预定义异常说明
- oracle学习笔记 ---- 常用SQL*PLUS命令(二)之格式化查询结果
- oracle学习第三天【sqlplus常用命令】
- oracle学习 第三章 常用的SQL*PLUS命令 ——03