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. Delphi 自带的字符串分割函数split

    下面介绍Delphi自带的字符串分割函数,根据你的需要来使用. 1.ExtractStrings function ExtractStrings(Separators, WhiteSpace: TSy ...

  2. Android-解析JSON数据(JSON对象/JSON数组)

    在上一篇博客中,Android-封装JSON数据(JSON对象/JSON数组),讲解到Android真实开发中更多的是去解析JSON数据(JSON对象/JSON数组) 封装JSON的数据是在服务器端进 ...

  3. cocos2dx常见Action(转)

    本文转载自:http://blog.csdn.net/ff313976/article/details/23667209 bool HelloWorld::init(){ ////////////// ...

  4. Kindeditor编辑器上传附件,自动获取文件名显示。

    大部分在线编辑器在上传附件之后都是会以路径的形式显示出来很不友好.类似这样..怎么样显示成这样用户上传的原始文件名呢.就是这样.是不是看着很友好. kindeditor编辑器上传文件是已插件的形式调用 ...

  5. C# 4种方法计算斐波那契数列 Fibonacci

    F1: 迭代法 最慢,复杂度最高 F2: 直接法 F3: 矩阵法 参考<算法之道(The Way of Algorithm)>第38页-魔鬼序列:斐波那契序列 F4: 通项公式法 由于公式 ...

  6. WEB文本框提示

    <input type="text" placeholder="文本框提示语" name="version_no"/>

  7. CSS文字大小单位PX、EM的区别

    ◆px像素(Pixel)是相对长度单位,像素px是相对于显示器屏幕分辨率而言的.(引自CSS2.0手册)◆em是相对长度单位,相对于当前对象内文本的字体尺寸.如当前对行内文本的字体尺寸未被人为设置,则 ...

  8. “全栈2019”Java第九十九章:局部内部类与继承详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. LOJ#2015. 「SCOI2016」妖怪(凸包)

    传送门 首先可以把每个妖怪看成二维平面上的一个点,那么每一个环境\((a,b)\)就可以看成一条斜率\(k=-\frac{b}{a}\)的过该点的直线,战斗力就是这条直线在两坐标轴上的截距之和 对于每 ...

  10. CentOS运行C++语言的Hello World

    1,编写代码,hello.cpp #include <iostream> using namespace std; int main(){ cout<<"hello ...