Oracle例外处理
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) is
v_ename emp2.ename%type;
beginselect ename into v_ename from emp2 where empno = v_in_empno;dbms_output.put_line('名称是:' || v_ename);
exceptionwhen NO_DATA_FOUND thendbms_output.put_line('输入的编号不存在');when others thendbms_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几种例外,Oracle例外用法实例详解
本文实例讲述了Oracle例外用法.分享给大家供大家参考,具体如下: 一.例外分类 oracle将例外分为预定义例外.非预定义例外和自定义例外三种. 1).预定义例外用于处理常见的oracle错误. ...
- oracle例外使用
例外的分类 Oracle将例外分为预定义例外,非预定义例外和自定义例外 3种. 预定义例外用于处理常见的oracle错误. 非预定义例外用于处理预定义例外不能处理的例外. 自定义例外用于处理与orac ...
- 总结:Oracle快速入门
2019独角兽企业重金招聘Python工程师标准>>> 一:数据库分类 小:access/foxbase等 中:mysql/sql server/informix等 大:oracle ...
- Oracle学习笔记--导航
Oracle入门http://blog.csdn.net/q547550831/article/details/49945737 Oracle用户管理http://blog.csdn.net/q547 ...
- oracle的路由器,如何充分使用Oracle?
如何充分使用Oracle? 本文实例讲述了Oracle例外用法.分享给大家供大家参考,具体如下: 一.例外分类 oracle将例外分为预定义例外.非预定义例外和自定义例外三种. 1).预定义例外用于处 ...
- 创建Goldengate例外句丙记录跟踪Oracle错误
Goldengate没有例外处理机制,如果复制进程出错,就会Abend,并Rollbak事务到上一个Checkpoint.这在生产环境中是不理想的做法. HANDLECOLLISIONS 和 NOHA ...
- ORACLE提供了 三种例外,oracle(7)例外处理
oracle将例外分为预定义例外,非预定义例外和自定义例外三种 预定义例外用于处理常见的oracle错误 非预定义例外用于处理预定义例外不能处理的例外 自定义例外用于处理与oracle错误无关的其它情 ...
- Oracle:PLSQL例外
PLSQL例外 例外,相当于java中的异常,是程序设计语言提供的一种功能,用来增强程序的健壮性和容错性. 有三种类型的异常错误 1.预定义(Predefined)错误 ORACLE预定义的异常情况大 ...
- Oracle中PLSQL中一个例外的写法
/* 被0除例外 */ set serveroutput on declare pnum number; begin pnum := 1/0; EXCEPTION when zer ...
最新文章
- nginx的平滑升级方法:
- windows一个目录下最大文件数目
- mysql 5.02审计_CentOS 7.2 mysql-5.7.17 审计插件安装、开启与设定
- 基于BindingSource的WinForm开发
- IOS学习之蓝牙4.0
- Log4j的自定义logger
- Centos 下安装redmine及设置发送邮件功能
- 清华计算机系山东分数,清华大学山东录取分数线|2021清华大学山东分数线|2021年清华大学山东高考分数线|2021年清华大学山东招生计划录取人数...
- 让sublime编译php、js
- 推荐系统:非个性化推荐Non-personalized recommendation
- Understanding COM Apartments
- C# 基础(二十五)WPF/WinForm 控件的句柄是什么意思?
- 七彩安卓影视APP源码独立解析接口
- rsa_eay_private_encrypt
- 新建word 无法切换输入法_为什么word文件中无法切换输入法?
- 排序算法7——图解快速排序(两种主元选择方法)以及CUTOFF时间测试
- JBE与JLE的区别
- Postgis使用工具raster2pgsql批量导入栅格数据(一)
- linux动态监控系统
- 2020软件构造实验三
热门文章
- 函授计算机大专自我鉴定100字,函授大学毕业自我鉴定100字(精选5篇)
- C# LINQ学习笔记四:LINQ to OBJECT之操作文件目录
- Python中的@property Decorator:其用例,优点和语法
- 交互键盘_如何仅为键盘交互添加聚焦环
- 我的第一个安卓应用程序_今天,我启动了我的第一个移动应用程序。 这是我学到的...
- nfsd linux是什么进程,Linux 下的 NFS 系统简介
- golang 所有进程休眠_Golang-进程无故消失?
- macOS安装配置Java
- 竞争神经网络与SOM神经网络及其在矿井突水水源判别的应用
- Simulink步长