首页 技术 正文
技术 2022年11月16日
0 收藏 573 点赞 3,136 浏览 1013 个字

在写oracle存储过程的时候很多东西放到存储过程里面比如一些判断等,要比在程序逻辑里面简单很多,但是也会涉及到捕获和抛出一样的问题。

捕获异常

语法:

首先定义异常:

<异常情况>  EXCEPTION;

抛出异常:

  raise  <异常情况>;

处理异常:

 EXCEPTION    WHEN excepttion_name1 then      ........    WHEN excepttion_name2 then     ........    WHEN excepttion_name3 then     ........ End;

例子:

declare    a  int:=0;    b int:=1;   ex_1 exception;   ex_2 exception;begin   if a=0 then    raise ex_1;    end if;    if b=1 then      raise ex_2;    end if;    exception      when ex_1 then         DBMS_OUTPUT.put_line('捕获了错误1');      when ex_2 then         DBMS_OUTPUT.put_line('捕获了错误2'); end;

输出:

捕获了错误1

这里由于在ex_1的地方就出现了错误 ,所以下面ex_2没有执行,而是直接跳到错误处理的代码部分了。在Oracle中不允许一个异常由多个异常处理块来处理。

利用OhtERS处理所有的错误

declare    a  int:=0;   ex_1 exception;begin   if a=0 then    raise ex_1;    end if;    exception      when others then        DBMS_OUTPUT.put_line('捕获了全局错误'); end;

输出:

抛出异常

RAISE_APPLICATION_ERROR 函数

该函数是将应用程序专有的错误从服务器端转达到客户端应用程序(其他机器上的SQLPLUS或者前台开发语言)

PROCEDURE RAISE_APPLICATION_ERROR( error_number_in IN NUMBER, error_msg_in IN VARCHAR2);    error_number_in :自定义的错误码,容许从 -20000 到 -20999 之间,这样就不会与 ORACLE 的任何错误代码发生冲突。    error_msg_in:长度不能超过 2k,否则截取 2k

例子:让一个数不能为0

declare  a int:=0;begin   if a=0 then      RAISE_APPLICATION_ERROR(-20001,‘数值不能为0’);    end if;end;

运行:

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,564
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,413
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,186
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905