EXCEPTION抛出异常

处理除数为零异常

declare

varA number;

begin

varA:=10/0;

dbms_output.put_line('IT WILL NOT WORK');

EXCEPTION

when zero_divide then --when 后面加的是异常名称

dbms_output.put_line('it can not be zero');

dbms_output.put_line('SQLCODE= '||SQLCODE);--异常编号

END;

/

it can not be zero

SQLCODE= -1476

PL/SQL procedure successfully completed.

处理赋值异常

declare

varA varchar2(1);

varB varchar2(6):='oracle';

begin

varA:=varB;

dbms_output.put_line('wrong value');

exception

when value_error then

dbms_output.put_line('Wrong');

dbms_output.put_line('SQLCODE= '||SQLCODE);

END;

/

Wrong

SQLCODE= -6502

PL/SQL procedure successfully completed.

WHEN后面若无捕获,则交由程序默认处理

找不到数据

declare

eno emp.empno%TYPE;

ename emp.ename%TYPE;

begin

eno:=&empno;

select ename into ename from emp where empno=eno;

dbms_output.put_line('eno:'||eno||' ename:'||ename);

exception

when no_data_found then

dbms_output.put_line('not found empno');

end;

/

Enter value for empno: 9999

old   5: eno:=&empno;

new   5: eno:=9999;

not found empno

返回多条结果

declare

dno emp.deptno%TYPE;

ename emp.ename%TYPE;

begin

dno:=&deptno;

select ename into ename from emp where deptno=dno;

exception

when too_many_rows then

dbms_output.put_line('too many data');

dbms_output.put_line('SQLCODE '||SQLCODE);

END;

/

Enter value for deptno: 10

old   5: dno:=&deptno;

new   5: dno:=10;

too many data

SQLCODE -1422

使用OTHERS来捕获所有异常

declare

result number;

title varchar2(50):='www.vastdata.com.cn';

begin

result:=title;

exception

when others then

dbms_output.put_line('SQLCODE= '||SQLCODE);

dbms_output.put_line('SQLERRM= '||SQLERRM);

END;

/

SQLCODE= -6502

SQLERRM= ORA-06502: PL/SQL: numeric or value error: character to number

conversion error

使用用户定义异常

declare

data number;

myexp exception;

Pragma exception_init(myexp,-20789);

begin

data:=&inputData;

if data>10 and data<100 then

raise myexp;

end if;

exception

when others then

dbms_output.put_line('---------Wrong---------');

dbms_output.put_line('sqlcode= '||sqlcode);

dbms_output.put_line('sqlerrm= '||sqlerrm);

end;

/

构建动态异常

declare

data number;

myexp exception;

pragma exception_init(myexp,-20789);

begin

dbms_output.put_line('input number:');

data:=&inputData;

if data>10 and data<100 then

raise_application_error(-20789,'values can not be 10-100');

end if;

exception

when others then

dbms_output.put_line('sqlcode= '||sqlcode);

dbms_output.put_line('sqlerrm= '||sqlerrm);

end;

/

Enter value for inputdata: 11

old   7: data:=&inputData;

new   7: data:=11;

input number:

sqlcode= -20789

sqlerrm= ORA-20789: values can not be 10-100

PL/SQL EXCEPTION捕获抛出异常的更多相关文章

  1. PL/SQL — 集合及常用方法

    PL/SQL中提供了常用的三种集合联合数组.嵌套表.变长数组,而对于这几个集合类型中元素的操作,PL/SQL提供了相应的函数或过程来操纵数组中的元素或下标.这些函数或过程称为集合方法.一个集合方法就是 ...

  2. PL/SQL编程基础(五):异常处理(EXCEPTION)

    异常处理 异常产生所带来的问题: 使用EXCEPTION程序块进行异常处理: 实现用户自定义异常. 使用异常可以保证在程序中出现运行时异常时程序可以正常的执行完毕: 用户可以使用自定义异常进行操作. ...

  3. oracle PL/SQL(procedure language/SQL)程序设计之异常(exception)

    什么是异常?在PL/SQL中的一个标识.在程序运行期间被触发的错误.异常是怎样被触发的?产生一个Oracle错误.用户显示触发.怎样处理异常?用异常处理句柄捕获异常.传播异常到调用环境. 捕获异常 E ...

  4. ORACLE PL/SQL异常处理(Exception)学习笔记

    1.PL/SQL错误类型 错误类型 报告者 处理方法 编译时错误 PL/SQL编译器 交互式地处理:编译器报告错误,你必须更正这些错误 运行时错误 PL/SQL运行时引擎 程序化地处理:异常由异常处理 ...

  5. PL/SQL 08 异常 exception

    --PL/SQL错误  编译时  运行时 --运行时的出错处理  EXCEPTION --异常处理块DECLARE …BEGIN …EXCEPTION WHEN OTHERS THEN  handle ...

  6. PL/SQL异常处理方法

    PL/SQL异常处理方法   1:什么是异常处理: PL/SQL提供一个功能去处理异常,在PL/SQL块中叫做异常处理,使用异常处理我们能够测试代码和避免异常退出. PL/SQL异常信息包含三个部分: ...

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

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

  8. PL/SQL基础-异常处理

    --*********异常处理一.异常的类型 ORACLE异常分为两种类型:系统异常.自定义异常. 其中系统异常又分为:预定义异常和非预定义异常.1.预定义异常 ORACLE定义了他们的错误编号和异常 ...

  9. pl/sql programming 15 数据提取

    数据提取 -- 游标 游标只是一个指向某个结果集的指针. 声明游标: cursor employee_cur IS select * from employees; 打开游标: open employ ...

随机推荐

  1. IOPS性能指标

    如何计算mysql的IOPS? qps 每秒处理的查询数tps 每秒处理的事务数IOPS,每秒磁盘进行的I/O操作次数 今天看到一篇文章说磁盘理论最大IOPS为200左右,我有两个疑问:1.MYSQL ...

  2. 【代码审计】iZhanCMS_v2.1 前台GoodsController.php页面存在SQL注入漏洞分析

      0x00 环境准备 iZhanCMS官网:http://www.izhancms.com 网站源码版本:爱站CMS(zend6.0) V2.1 程序源码下载:http://www.izhancms ...

  3. SaltStack 安装及配置认证

    一.SaltStack 安装 SaltStack 是基于 Python 开发的,也是基于 C/S 架构,通过服务端 ( master ) 控制多台客户端 ( minion ) 实现批量操作这里我们使用 ...

  4. hadoop自动提交脚本

    自动提交到hadoop系统,然后调用wordcount的任务,并下载输出的文件. #!/bin/sh #从给定的路径获取文件列表,提交到hadoop系统,使用wordcount的功能统计单词数量 #e ...

  5. gcc的选项

    -g: 是一个编译选项,即在源代码编译的过程中起作用,让gcc把更多调试信息(也就包括符号信息)收集起来并将存放到最终的可执行文件内. -rdynamic:   却是一个 连接选项 ,它将指示连接器把 ...

  6. Lua中的注释

    Lua中有两种注释:行注释和块注释.行注释以“--”开头,可以注释这一行后面的内容.块注释以“--[[”开始,以“--]]”结尾,可以注释这个范围内的整个内容:块注释可以注释多行内容.下面是一个示例: ...

  7. SQL Server2008安装后1433端口没监听问题

    win2008系统安装完SQL Server2008后发现1433端口并没有监听,netstat -an并没有发现监听的1433端口,本机telnet localhost 1433也连不通,百度之后说 ...

  8. java框架---->mybatis的使用(一)

    这里我们记录一些mybatis的一些常用知识和项目中遇到的问题总结.快乐人生的三个必要元素是,有要做的事.热爱的事及盼望的事. mybatis的一些知识 一.mybatis插入返回主键值 插入的jav ...

  9. 转载->C#事件的使用和讲解

    C#事件的使用和讲解 事件的由来 在上一篇幅博客中http://www.cnblogs.com/JiYF/p/6867081.html 对委托讲解的比较细致 我们继续思考上面的程序:上面的三个方法都定 ...

  10. windows8 Metro App用Javascript来调用C#的library

    (转自:http://www.ronaldwidha.net/2012/05/10/winrt-calling-c-csharp-class-libraries-from-winjs-javascri ...