orcale 中的例外我们可以看作是其他编程语言中的异常,是为了增强语言的健壮性和容错性。

  在orcale中常见的有以下几种:

  1. No_data_found 很容易理解就是没有数据返回。
  2. Too_many_rows 在我们使用 select ... into 的时候这种错误经常的会发生,就是因为其返回了多条内容。
  3. Zero_Divide 被零除。
  4. Value_error 算数或者转换错误,比如说我们想把一个字符串 “abc” 转换成一个整数类型的数据
  5. Time_on_resource 等待资源的时候由于时间过长会有这样的例外发生。

自定义例外

  可以在声明的时候定义一个例外如下:

no_emp_found exception;

  在有可能发生异常的地方使用 raise 将异常进行抛出

raise no_emp_found;

  最后我们只需要对异常进行处理就行了

例子 查询 orcale 自带表emp 中 50 号部门的员工,我们知道50号部门是没有员工的。

--自定义例外没有查找到的例外no_emp_found
declare
cursor c_emp is select ename from emp where deptno=50;
p_ename emp.ename%type;
--定义一个例外
no_emp_found exception;
begin
open c_emp;
--获取一条记录
fetch c_emp into p_ename;
--如果没有查到则抛出自定义例外
if c_emp%notfound then
raise no_emp_found;
end if;
close c_emp;
--捕获例外
exception
when no_emp_found then dbms_output.put_line('没有该部门下的员工');
when others then dbms_output.put_line('其他例外');
end;
/

  这里有一个问题:我们知道无法查询到50号部门的员工所以会提前的抛出异常,那么这个游标就没有办法关闭了,事实是这样的吗?其实这个游标还是会关闭的啊。在 orcale 中会自行的启动一个叫pmon(process monitor) 的进程,该进程的目的就是对pl/sql中的资源进行监控,如果发现存在没有关闭的资源会对其进行关闭操作。所以我们无需关心资源没有关闭的问题,但是提醒大家还是最好手动的对资源进行关闭的操作。

  

  

orcale 之pl/sql例外的更多相关文章

  1. orcale 之 PL/SQL的游标

    根据我们之前了解到的情况,SQL是面向集合的,我们的查询结果一般包含多条数据,而在PL/SQL 中的变量一般只能存放一条数据,因此变量是无法满足我们的需求的.这时候我们就需要引入游标来为我们解决问题了 ...

  2. orcale 之PL/SQL 控制语句

    控制语句是PL/SQL 的关键所在.只有学好这些控制语句才能在工作中更好的实现各种的功能. 选择结构 1. IF 语句 和其他的编程语言很类似.它的具体机构如下: IF(条件)THEN {语句} EL ...

  3. orcale 之 pl/sql

    基本结构 不多说直接来看下它的结构: DECLARE -- 此处声明一些变量.常量.或者用户自定的数据类型 -- 这一部分是可选的,如果不需要可以不写 BEGIN -- 程序的主体,这里可以写一些合法 ...

  4. PL/SQL入门随笔

    PL/SQL(Procedure Language/SQL) PLSQL是Oracle对sql语言的过程化扩展:在SQL命令语言中增加了过程处理语句(如分支.循环等),使SQL语言具有过程处理能力.S ...

  5. pl/sql进阶--例外处理

    在pl/sql的执行过程中发生异常时系统所作的处理称为一个例外情况(exception).通常例外情况的种类有三种: 1.预定义的oracle例外情况oracle预定义的例外情况大约有24个,对于这种 ...

  6. pl/sql进阶——例外处理

    在pl/sql的执行过程中发生异常时系统所作的处理称为一个例外情况(exception).通常例外情况的种类有三种: ①预定义的oracle例外情况,oracle预定义的例外情况大约有24个,对于这种 ...

  7. 整理课堂笔记 pl/sql orcale异常

      1>>>>>异常错误处理 1 >预定义的异常处理 预定义说明的部分 ORACLE 异常错误对这种异常情况的处理,只需在PL/SQL块的异常处理部分,直接引用相应 ...

  8. PL/SQL语言的学习笔记

    一.PL/SQL简介1.什么是PL/SQL程序?(PL/SQL是对SQL语言的一个扩展,从而形成的一个语言) 2.PL/SQL语言的特点(操作Orcale数据库效率最高的就是PL/SQL语言,而不是C ...

  9. Oracle PL/SQL随堂笔记总结

    1.pl/sql编程 2.存储过程 3.函数 4.触发器 5.包 6.pl/sql基础 -定义并使用变量 7.pl/sql的进阶 8.oracle的视图 1.pl/sql编程 1.理解oracle的p ...

随机推荐

  1. handsontable-developer guide-cell editor

    单元格编辑 cell editor renderer:展示数据:editor:改变数据:renderer用一个函数表示:后者有一系列的操作,需要用class来表示: EditorManager han ...

  2. 基于Struts2开发学生信息管理系统 源码

    开发环境:    Windows操作系统开发工具: Eclipse+Jdk+Tomcat+MYSQL数据库 运行效果图: 联系博主-Q:782827013

  3. java数据结构和算法03(队列和优先级队列)

    什么是队列呢?其实队列跟栈很像,我们可以把栈的底部给弄开,这样数据就可以从下面漏出来了,我们就从下面拿就好了. 可以看到队列是新进先出,就跟我们显示生活中的排队一样,买火车票,飞机票等一样,先去的肯定 ...

  4. 史上最全的Python学习现线路视频教程(转)

    首先,由于各方面压力,不得不学习现在的主流技术,深度学习,人工智能,机器学习各方面的,python又重新的进入了更多的程序猿的圈子,原以为java就差不多可以干到退休了,但是没办法,学....已经成功 ...

  5. [转载]WCF系列_分布式事务(下)

    浏览到chnking的WCF的分布式事务处理不错,转载过来分享一下. 1. WCF分布式事务例子这里也用转账的例子说事.用户在系统A和系统B都有账户,账户间的资金可以互转,系统A的资金减少多少,系统B ...

  6. C#获取枚举的描述

    public enum StatusEnum { /// <summary> /// 运行中 /// </summary> [Description("运行中&quo ...

  7. c#复习提纲

    c#零碎整理 注:本文中大部分图片来自老师的PPT,感谢邵老师!文中所有内容为自己按照PPT整理,欢迎指正! 标识符 标识符(类名.变量名.方法名.表空间名等) 大小写敏感 正则表达式  小括号(组合 ...

  8. python--基础数据类型 set集合

    一.set集合 set集合是python的一个基本数据类型,一般不是很常用.set中的元素是不重复的.无序的.里面的元素必须是可hash的(int, str, tuple, bool) 注意:   s ...

  9. Remoteland HDU - 4196

    题意: 给出一个n,在[1, n] 中挑选几个不同的数相乘,求能的到的最大完全平方数 解析: 最大的肯定是n!, 然后n!不一定是完全平方数 (我们知道一个完全平方数,质因子分解后,所有质因子的质数均 ...

  10. Windows系统下如何在cmd命令窗口中切换Python2.7和Python3.6

    针对在同一系统下我们可能安装多个版本的Python,毕竟Python2.7与Python3.6还是有不同的需求,但是在用Cmd命令窗口是我们可能默认的系统变量环境是其中一个版本,当我们需要在cmd命令 ...