PL/SQL中的异常处理
来源:互联网 发布:站群管理系统sql注入 编辑:程序博客网 时间:2024/06/06 18:02
PL/SQL程序在运行的过程当中,可能会出现错误或者异常的情况,例如无法建立与ORACLE的连接,或者返回多行的错误。好的程序应该是对可能发生的异常情况进行处理,异常处理代码在EXCEPTION中实现。可以在EXCEPTION块中使用WHEN语句来定义异常处理。WHEN语句的使用方法如下:
EXCEPTION
WHEN <异常情况名> THEN
<异常处理代码>
WHEN <异常情况名> THEN
<异常处理代码>
……
WHEN OTHERS THEN
<异常处理代码>
异常情况名是ORACLE定义的异常情况标识,当WHEN语句中指定的异常情况发生的时候,THEN关键字后面的异常处理代码将会被执行:
异常情况名
ORA代码
SQL代码
说明
ACCESS_INTO_NULL
ORA-06530
-6530
试图赋值到一个未初始化的对象
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
试图和ORACLE建立连接,但是却不能提供有效的用户名和口令
NO_DATA_FOUND
ORA-01403
100
执行了SELECT INTO语句,但是却没有匹配的行数据
NOT_LOGGED_ON
ORA-01012
-1012
试图进行数据库操作,但没登陆
PROGRAM_ERROR
ORA-06501
-6501
PL/SQL内部错误
ROWTYPE_MISMATCH
ORA-06504
-6504
PL/SQL返回的游标变量和主游标不匹配
SELF_IS_NULL
ORA-30625
-30625
试图执行对象例程的一个成员方法,但全程为空(NULL)
STORAGE_ERROR
ORA-06500
-6500
存储空间错误
SUBSCRIPT_BEYOND_COUNT
ORA-06532
-6532
试图通过使用索引来引入嵌入表,但是此索引比表中的数值还要大
SYS_INVALID_ROWID
ORA-01410
-1410
试图将一个字符串传递给ROWID,但是操作失败
TIMEOUT_ON_RESOURCE
ORA-00051
-51
当Oracle等待分配资源的时候,资源已经耗尽
TOO_MANY_ROWS
ORA-01422
-1422
执行一条SELECT INTO语句,但是却返回了多行数据
VALUE_ERROR
ORA-06502
-6502
当试图将一个值存储到一个变量时,此变量不接受这个值。可能是由于该值太大了或者与变量的类型不匹配
ZERO_DIVIDE
ORA-01476
-1476
试图用0做除数
以下是一个控制异常的示例程序:
DECLARE
var_name VARCHAR2(100);
BEGIN
SELECT aac003
INTO var_name
FROM ac01、、
WHERE aac002='xxxx';
EXCEPTION
WHEN TOO_MANY_ROWS THEN
dbms_output.put_line('返回多条数据');
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('没有找到数据');
WHEN OTHERS THEN
dbms_output.put_line('执行有误'||SQLERRM);
END;
- pl/sql中的异常处理
- PL/SQL中的异常处理
- PL/SQL中的异常处理
- PL/SQL 异常处理
- PL/SQL异常处理
- PL/SQL异常处理
- PL/SQL异常处理
- PL/SQL 异常处理
- pl/sql异常处理
- PL/SQL 异常处理
- PL/SQL异常处理
- PL SQL异常处理
- PL/SQL 异常处理
- pl/sql异常处理
- PL/SQL异常处理
- PL/SQL异常处理
- PL/SQL异常处理
- PL/SQL--异常处理
- 对完成端口的一些看法
- Hello, Tkinter
- Servlet过滤器大全
- hello , world --Tkinter代码描述
- 今日之迪卡龙
- PL/SQL中的异常处理
- Factory Method Pattern
- linux应用软件
- 基于qt和mysql的学生注册系统(二)
- 解决WINFORM下面rtf不能在IE上面显示图片的问题
- exit()与_exit()的辨析
- Notice: Zend_Loader::Zend_Loader::registerAutoload is deprecated as of 1.8.0 and will be removed with 2.0.0; use Zend_Loader_Aut
- Oracle查看当前实例
- dom加载完的判断