Oracle -- plsql异常处理
来源:互联网 发布:雷欧团灭mac的怪兽 编辑:程序博客网 时间:2024/05/19 18:46
4. 两种触发异常方法:
发生了 Oracle 错误,就会自动触发相关的异常。可以在块中使用RAISE语句显式的触发异常。被触发的异常可以是预定义的异常,也可以是自定义的异常。
5. 截获异常
如果在块的执行部分异常被触发,当前的块就会转去执行异常处理部分的相应异常处理机。如果PL/SQL成功处理了异常, 就不会把异常传播给外部块或环境,从而,PL/SQL块正常结束。
6. 异常的传播
如果在块的执行部分异常被触发, 然而没有相应的异常处理机,块就会异常终止,而将异常传递给调用环境。
错误引发异常,每当引发异常时,都将控制权传递给异常处理程序,异常处理程序处理异常.
捕获异常:
- EXCEPTION
- WHEN exception1 [OR exception2 . . .] THEN
- statement1;
- statement2;
- . . .
- [WHEN exception3 [OR exception4 . . .] THEN
- statement1;
- statement2;
- . . .]
- [WHEN OTHERS THEN
- statement1;
- statement2;
- . . .]
7. 预定义异常:
预定义异常是由 Oracle 为常见错误预先定义的,不需要显式声明。
在相应的异常处理例程中引用错误的标准名来截获一个Oracle 服务器预定义错误。
例子:
- DECLARE
- v_sal emp.sal%type;
- BEGIN
- SELECT sal INTO v_sal
- FROM emp
- WHERE empno=999;
- EXCEPTION
- WHEN NO_DATA_FOUND then
- dbms_output.put_line('没有查到数据');
- WHEN others then
- dbms_output.put_line('其它异常');
- END;
要截获Oracle服务器没有预定义的错误,需先声明这个错误或者使用OTHERS处理机。
8. 非预定义异常(自定义异常):
8.1. 在声明部分声明异常名。
语法:
exception EXCEPTION;
其中: exception 异常名
8.2. 使用PRAGMAEXCEPTION_INIT语句将异常处理名字和Oracle的错误代码关联起来.
语法:
PRAGMA EXCEPTION_INIT ( exception, error_number ) ;
其中: exception 先前声明的异常名
error_number 标准Oracle 错误代码
8.3. 在相应的异常处理例程中引用已声明的异常。关键字 PRAGMA (伪指令pseudoinstructions)表示语句是一个编译指令,在执行PL/SQL块时并不处理该语句。在 PL/SQL块中,一个编译指令EXCEPTION_INIT告诉编译器将一个异常处理的名字和一个Oracle错误代码联系起来。
- DECLARE
- e_emp_cons EXCEPTION;
- PRAGMA EXCEPTION_INIT(e_emp_cons,-00001);
- BEGIN
- INSERT INTO emp
- SELECT * FROM emp;
- EXCEPTION
- WHEN e_emp_cons THEN
- dbms_output.put_line('违反唯一性约束');
- END;
捕获异常的函数:
返回Oracle的错误代码
返回和错误值相关联的信息
SQLCODE值 说明
0 没有异常
100 NO_DATA_FOUND异常
负数 其它Oracle错误号在PL/SQL块的声明部分声明。
使用RAISE语句显式地发布 。
- ORACLE/PLSQL 异常处理
- Oracle -- plsql异常处理
- ORACLE PLSQL 异常处理
- 【Oracle篇】异常处理和PLSQL
- Oracle PlSql/Form 异常与处理
- PLSQL异常处理初步
- PLSQL 的异常处理
- plsql中的异常处理
- PLSQL 异常处理
- PLSQL----异常处理
- oracle/plsql/异常
- Oracle PLSQL Exception异常分类、异常抛出、异常处理、异常传播
- PLSQL编程5:plsql异常处理
- PLSQL学习(三) 异常处理
- plsql连接oracle客户端异常解决方案
- oracle/plsql 进程锁死处理
- Oracle/plsql 进程锁死处理
- oracle数据异常处理
- JasperReport + Servlet Web应用之:HTML显示报表内容
- java的MD5加密、解密
- Linux网络编程之socket:由一个进程发起多个连接
- Leetcode LRU Cache
- poj1094注意事项
- Oracle -- plsql异常处理
- Xcode6中自动布局autolayout和sizeclass的使用
- poj 2976 drop texts(二分搜索)
- fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏=》 解决办法
- 用calloc分配10块大小为4字节的内存空间,打印指针地址,并且打印出内存中的内容
- Linux权限管理-chown
- 磁力搜索引擎-RunBt
- 使用malloc分别分配2KB,6KB的内存空间,打印指针地址
- DG 单实例与RAC实例 metalink ID