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例外处理相关推荐

  1. oracle几种例外,Oracle例外用法实例详解

    本文实例讲述了Oracle例外用法.分享给大家供大家参考,具体如下: 一.例外分类 oracle将例外分为预定义例外.非预定义例外和自定义例外三种. 1).预定义例外用于处理常见的oracle错误. ...

  2. oracle例外使用

    例外的分类 Oracle将例外分为预定义例外,非预定义例外和自定义例外 3种. 预定义例外用于处理常见的oracle错误. 非预定义例外用于处理预定义例外不能处理的例外. 自定义例外用于处理与orac ...

  3. 总结:Oracle快速入门

    2019独角兽企业重金招聘Python工程师标准>>> 一:数据库分类 小:access/foxbase等 中:mysql/sql server/informix等 大:oracle ...

  4. Oracle学习笔记--导航

    Oracle入门http://blog.csdn.net/q547550831/article/details/49945737 Oracle用户管理http://blog.csdn.net/q547 ...

  5. oracle的路由器,如何充分使用Oracle?

    如何充分使用Oracle? 本文实例讲述了Oracle例外用法.分享给大家供大家参考,具体如下: 一.例外分类 oracle将例外分为预定义例外.非预定义例外和自定义例外三种. 1).预定义例外用于处 ...

  6. 创建Goldengate例外句丙记录跟踪Oracle错误

    Goldengate没有例外处理机制,如果复制进程出错,就会Abend,并Rollbak事务到上一个Checkpoint.这在生产环境中是不理想的做法. HANDLECOLLISIONS 和 NOHA ...

  7. ORACLE提供了 三种例外,oracle(7)例外处理

    oracle将例外分为预定义例外,非预定义例外和自定义例外三种 预定义例外用于处理常见的oracle错误 非预定义例外用于处理预定义例外不能处理的例外 自定义例外用于处理与oracle错误无关的其它情 ...

  8. Oracle:PLSQL例外

    PLSQL例外 例外,相当于java中的异常,是程序设计语言提供的一种功能,用来增强程序的健壮性和容错性. 有三种类型的异常错误 1.预定义(Predefined)错误 ORACLE预定义的异常情况大 ...

  9. Oracle中PLSQL中一个例外的写法

    /* 被0除例外 */ set serveroutput on declare     pnum number; begin   pnum := 1/0;   EXCEPTION   when zer ...

最新文章

  1. nginx的平滑升级方法:
  2. windows一个目录下最大文件数目
  3. mysql 5.02审计_CentOS 7.2 mysql-5.7.17 审计插件安装、开启与设定
  4. 基于BindingSource的WinForm开发
  5. IOS学习之蓝牙4.0
  6. Log4j的自定义logger
  7. Centos 下安装redmine及设置发送邮件功能
  8. 清华计算机系山东分数,清华大学山东录取分数线|2021清华大学山东分数线|2021年清华大学山东高考分数线|2021年清华大学山东招生计划录取人数...
  9. 让sublime编译php、js
  10. 推荐系统:非个性化推荐Non-personalized recommendation
  11. Understanding COM Apartments
  12. C# 基础(二十五)WPF/WinForm 控件的句柄是什么意思?
  13. 七彩安卓影视APP源码独立解析接口
  14. rsa_eay_private_encrypt
  15. 新建word 无法切换输入法_为什么word文件中无法切换输入法?
  16. 排序算法7——图解快速排序(两种主元选择方法)以及CUTOFF时间测试
  17. JBE与JLE的区别
  18. Postgis使用工具raster2pgsql批量导入栅格数据(一)
  19. linux动态监控系统
  20. 2020软件构造实验三

热门文章

  1. 函授计算机大专自我鉴定100字,函授大学毕业自我鉴定100字(精选5篇)
  2. C# LINQ学习笔记四:LINQ to OBJECT之操作文件目录
  3. Python中的@property Decorator:其用例,优点和语法
  4. 交互键盘_如何仅为键盘交互添加聚焦环
  5. 我的第一个安卓应用程序_今天,我启动了我的第一个移动应用程序。 这是我学到的...
  6. nfsd linux是什么进程,Linux 下的 NFS 系统简介
  7. golang 所有进程休眠_Golang-进程无故消失?
  8. macOS安装配置Java
  9. 竞争神经网络与SOM神经网络及其在矿井突水水源判别的应用
  10. Simulink步长