【功能】
针对已经编绎通过的块/存储过程,在运行过程中,也可能会报错,异常处理可以将报错的信息进行记录并返回,另外,也可以自定义异常。

【格式】
declare
自定义异常变量 exception;
begin
–数据处理
exception
when 自定义变量 then
–自定义异常处理
when others then
–系统异常处理
end;

【注意事项】
1.异常有两种:自定义异常(需要定义异常类型的变量)、系统异常(others)

/自定义异常/
【示例1】
需求描述:
create or replace procedure <用户名>.<存储过程名>
(
iv_date in varchar2, --统计日期
oi_return out integer --结束成功否标志
)
is
vv_task_pos varchar2(50); --任务位置
vi_err_code integer; --出错代码
vv_err_msg varchar2(200); --出错信息
exc_return exception; --自义定异常
begin

vv_task_pos := ‘检查输入参数’;
if (iv_date is null) then
vi_err_code := -1;
vv_err_msg := ‘没有输入统计日期参数’;
raise exc_return;
end if;

exception
when exc_return then
rollback;
oi_return := vi_err_code;
end;

/系统异常/

【示例2】
begin
null;
exception
when others then
vi_err_code := sqlcode;
vv_err_msg := substr(sqlerrm, 1, 200);
rollback;
oi_return := vi_err_code;
end;


示例3:

declare
t varchar2(10);
a varchar2(100);
c varchar2(100);
e exception;
begin
select serv_name into t from tb_sver_name where serv_num=‘13116371042’;
dbms_output.put_line(t);
select serv_name into t from tb_sver_name where 1=2;
dbms_output.put_line(t);
select serv_name into t from tb_sver_name where serv_num=‘13116371043’ ;
if t=‘gwei’ then
raise e;
end if ;

exception
when e then
delete from tb_sver_name where serv_name=‘gwei’;
dbms_output.put_line(‘我来过’);
–commit;
when too_many_rows then --系统异常:SELECT INTO 返回多行时报的错会跳到该异常
dbms_output.put_line(‘返回多行’);
when no_data_found then --系统异常:SELECT INTO 无结果集时会跳到该异常
dbms_output.put_line(‘无结果集’);
when others then --others:全部异常错误都会接收到此,一般与sqlcode、sqlerrm配合使用
dbms_output.put_line(sqlcode||sqlerrm);
end;

–系统异常:不需要exception上面做任何处理,只等着异常发生并跳到exception中的某个异常中
–自定义异常:需要在begin与exception之间设计异常 1.变量区(声明异常 exception类型) 2.关键字raise(begin后 ) 3.exception when e(异常名) then

异常 exception相关推荐

  1. spring boot 异常(exception)处理

    spring boot 异常(exception)处理 参考文章: (1)spring boot 异常(exception)处理 (2)https://www.cnblogs.com/jinbuqi/ ...

  2. ASP.NET MVC 异常Exception拦截

    ASP.NET MVC 异常Exception拦截 参考文章: (1)ASP.NET MVC 异常Exception拦截 (2)https://www.cnblogs.com/xyb0226/p/92 ...

  3. Struts2环境下Tomcat启动异常:Exception starting filter struts2,报了一个java.lang.ClassNotFoundException

    Struts2环境下Tomcat启动异常:Exception starting filter struts2,报了一个java.lang.ClassNotFoundException 参考文章: (1 ...

  4. Python编程基础:第二十九节 异常Exception

    第二十九节 异常Exception 前言 实践 前言 我们在写代码时不可避免地会出错,这时候编译器便会抛出异常并中断程序的执行.针对这种情况,我们可以采用异常处理的方式捕捉程序中的异常信息,并将异常信 ...

  5. Java中的异常 Exception

    Java中的异常 Exception java.lang.Exception类是Java中所有异常的直接或间接父类.即Exception类是所有异常的根类. 比如程序: public class Ex ...

  6. java异常 子类_Java异常 Exception类及其子类(实例讲解)

    C语言时用if...else...来控制异常,Java语言所有的异常都可以用一个类来表示,不同类型的异常对应不同的子类异常,每个异常都对应一个异常类的对象. Java异常处理通过5个关键字try.ca ...

  7. java经常会出现异常的是,“Java异常Exception”总结

    1. 异常(Exception). 2.Java中的异常分为两大类: a) Checked exception  (非  Runtime Exception) 非运行时异常 b) Unchecked ...

  8. PL/SQL 08 异常 exception

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

  9. java exception子类_Java异常 Exception类及其子类(实例讲解)

    C语言时用if...else...来控制异常,Java语言所有的异常都可以用一个类来表示,不同类型的异常对应不同的子类异常,每个异常都对应一个异常类的对象. Java异常处理通过5个关键字try.ca ...

  10. 我的女朋友漏电了–论C++中的失败(failure),缺陷(bug)和异常(exception)

    先做个广告置入,如果喜欢这篇文章,你可以到 zhaoyan.website/blog 去查看于此类似的C/C++文章. 我承认有点标题党了,不过这真的是一篇写软件的文章,所以如果你已经抽出了一张面巾纸 ...

最新文章

  1. Adam那么棒,为什么还对SGD念念不忘 (2)—— Adam的两宗罪
  2. 如何利用装饰者模式在不改变原有对象的基础上扩展功能
  3. python 调用 c 生成数组_python调用c++传递数组的实例
  4. 我眼中的各种编程语言
  5. c语言八大数据基本类型,C语言中基本的数据类型有哪些
  6. [Javascript]闭包是可以访问上一层函数作用域里变量的函数,即便上一层函数已经关闭
  7. Google Spanner 论文笔记
  8. 十大最受欢迎的新Eclipse插件
  9. 科技部教育部联合发文为科研人员绩效考核增加新依据
  10. linux系统用w程序,Linux w命令
  11. 数据迁移工具 - Flyway
  12. Linux服务笔记之一:Telnet远程登录
  13. 循环匹配对应筛选(2)
  14. nagios的check_tcp,check_udp插件的使用文档
  15. 【AtCoder】ARC083
  16. 教师工作量管理系统设计_教育培训机构为什么一定要用管理系统?
  17. 文件搭建后找不到变量/函数定义问题
  18. 统计·数值分析·概率论·人工智能数学基础
  19. 2022爱分析· 业财税一体化厂商全景报告
  20. (P57-P61)正则表达式

热门文章

  1. 浅谈量子纠缠,易经,能量,世界(一)
  2. 大数相乘(数组表示)
  3. 微信开发平台应用签名修改多久之后才可以使用
  4. Mybatis中模糊查询的SQL语句应该怎么写?
  5. 中职学校计算机应用基础学什么,中职计算机应用基础课程教学分析
  6. 银行外包Java开发的一些感想2023.2.5
  7. 二进制安装Kubernetes(k8s) v1.24.0 IPv4
  8. 张俊林:当前炼制“大语言模型”的两个现象
  9. 一文让你了解数据采集
  10. Spiking neural networks 2017 进展