Oracle例外处理
来源:互联网 发布:php单例模式代码 编辑:程序博客网 时间:2024/04/30 10:40
Oracle例外处理
在pl/sql的执行过程中发生异常时系统所作的处理称为一个例外情况(exception)。通常例外情况的种类有三种:
1、预定义的oracle例外情况oracle预定义的例外情况大约有24个,对于这种例外情况无需在程序中定义,由oracle自动地触发(重点)
2、非预定义的oracle例外情况由使用者增加定义例外情况,然后oracle自动将其触发执行。
3、自定义例外,这个用的较少。
自定义例外的基本语法:
exception
when <异常情况名> then
<异常处理代码>
when <异常情况名> then
<异常处理代码>
...
when others then
<异常处理代码>
捕获异常的两个目的:
1、给用户提示更加明确,方便对过程优化;
2、可能需要对异常进行业务处理。
--例外处理--编写过程,接受员工的编号,并显示该员工的姓名,如果员工不存在,则进行异常处理create or replace procedure p20(v_in_empno emp2.empno%type) isv_ename emp2.ename%type;begin select ename into v_ename from emp2 where empno = v_in_empno; dbms_output.put_line('名称是:' || v_ename);exception when NO_DATA_FOUND then dbms_output.put_line('输入的编号不存在'); when others then dbms_output.put_line('错误类型未知');end;/
预定义说明的部分ORACLE异常错误
错误号
异常错误信息名称
说明
ORA-0001
Dup_val_on_index
违反了唯一性限制
ORA-0051
Timeout-on-resource
在等待资源时发生超时
ORA-0061
Transaction-backed-out
由于发生死锁事务被撤消
ORA-1001
Invalid-CURSOR
试图使用一个无效的游标
ORA-1012
Not-logged-on
没有连接到ORACLE
ORA-1017
Login-denied
无效的用户名/口令
ORA-1403
No_data_found
SELECT INTO没有找到数据
ORA-1422
Too_many_rows
SELECT INTO 返回多行
ORA-1476
Zero-divide
试图被零除
ORA-1722
Invalid-NUMBER
转换一个数字失败
ORA-6500
Storage-error
内存不够引发的内部错误
ORA-6501
Program-error
内部错误
ORA-6502
Value-error
转换或截断错误
ORA-6504
Rowtype-mismatch
宿主游标变量与 PL/SQL变量有不兼容行类型
ORA-6511
CURSOR-already-OPEN
试图打开一个已处于打开状态的游标
ORA-6530
Access-INTO-null
试图为null 对象的属性赋值
ORA-6531
Collection-is-null
试图将Exists 以外的集合( collection)方法应用于一个null pl/sql 表上或varray上
ORA-6532
Subscript-outside-limit
对嵌套或varray索引得引用超出声明范围以外
ORA-6533
Subscript-beyond-count
对嵌套或varray 索引得引用大于集合中元素的个数.
ORA-6592
CASE_NOT_FOUND
Case条件结构里面没有对应选项
处理多个例外
set serveroutput on;declarevar_name varchar(60);beginselect ename into var_name from empwhere deptno=&deptno;exceptionwhen no_data_found thendbms_output.put_line('没有匹配数据!');when too_many_rows thendbms_output.put_line('返回多行数据!');when others thendbms_output.put_line('提示错误不明!');end;
----------参考《韩顺平玩转Oracle》
- Oracle例外处理
- oracle(7)例外处理
- Oracle常用命令10(oracle例外处理)
- oracle----例外
- Oracle 10g处理例外(即sql异常)学习一——预定义例外,即常见例外
- Oracle 10g处理例外(即sql异常)学习二——自定义例外和非预定义例外
- Oracle(26)pl/sql编程 例外处理
- jsp例外处理(2)
- PL/SQL处理例外
- oracle例外(异常)
- oracle 预定义例外
- oracle 自定义例外
- oracle 使用例外exception
- Oracle:例外exception
- ORACLE例外(异常)
- 二十七、oracle 例外
- 二十七、oracle 例外
- oracle学习之例外
- calculate pow(x,n)
- C语言开发总结(十一)
- nagios配置详解与集群监控
- codeforces 412C Pattern
- Java——多人聊天室(基于TCP的网络编程——Socket)
- Oracle例外处理
- 智能家居喂鱼系统(五)-树莓派C++库
- TIMESTAMP类型插入到VARCHAR2后转成DATE类型和指定格式字符串
- 菜鸟学Java----基本类型及其封装类
- 关于switch语句中省略break语句的问题
- ViewPager
- objective - C 下字符串的处理方法
- Linux压缩解压缩文章总结
- codeforces 412A Poster