在写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;

运行:

oracle plsql 捕获异常和抛出异常的更多相关文章

  1. Oracle/PLSQL存储过程详解

    原文链接:https://blog.csdn.net/zezezuiaiya/article/details/79557621 Oracle/PLSQL存储过程详解 2018-03-14 17:31: ...

  2. Oracle/PLSQL: ORA-06550

    参考: http://blog.csdn.net/haiross/article/details/20612135 Oracle/PLSQL: ORA-06550 Learn the cause an ...

  3. Oracle PLSQL读取(解析)Excel文档

    http://www.itpub.net/thread-1921612-1-1.html !!!https://code.google.com/p/plsql-utils/ Introduction介 ...

  4. MyEclipse+Weblogic+Oracle+PLSQL配置注意事项

    Weblogic配置详情:<Weblogic安装与配置图文详解>Oracle+PLSQL配置详情:<PL/SQL访问远程Oracle服务器(多种方式)>MyEclipse配置: ...

  5. oracle Plsql 运行update或者delete时卡死问题解决的方法

    oracle Plsql 运行update或者delete时 遇到过Plsql卡死问题或者导致代码运行sql的时候就卡死. 在开发中遇到此问题的时候,本来把sql复制出来,在plsql中运行,Sql本 ...

  6. java异常——捕获异常+再次抛出异常与异常链

    [0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java异常--捕获异常+再次抛出异常与异常链 的相关知识: [1]捕获异常相关 1.1)如果 ...

  7. oracle plsql基本语法

    oracle plsql 基本语法 --plsql默认规则:plsql赋值用":=" plsql判断用"=" plsql输入用"&" ...

  8. Oracle PLSQL

    Oracle :show explain plan select * from table(dbms_xplan.display); EXPLAIN PLAN FOR statements In fa ...

  9. 本地不安装Oracle,plsql远程连接数据库

    由于Oracle的庞大,有时候我们需要在只安装Oracle客户端如plsql.toad等的情况下去连接远程数据库,可是没有安装Oracle就没有一切的配置文件去支持.最后终于发现一个很有效的方法,Or ...

随机推荐

  1. JavaScript上传图片及时预览

    /*******************************正面图片上传预览开始****************************/        function previewImage ...

  2. iPhone 信号格转变数字

    ?在拨号键输入*3001#12345#* ?按呼叫键,就会进入Field Test页面 ?你就会看到信号格变为了数字,然而只要按home键返回就又会变为信号格 ?如果想一直变为数字的话,在Field ...

  3. 我的Android第三章:Android的组件介绍

    小编摘录了Android文档介绍Android四大组件的基本内容,感觉文档的内容写的很详细所以小编将它写入了博客 Android 使用Java语言开发.Android SDK 工具编译代码-以及任意数 ...

  4. mvc4 用NPOI导出Excel

    第一次做数据导出Excel,刚看到这个的时候,首先想到的就是新建一个excel的文件,然后将它下载,后来询问别人,他们都推荐使用NPOI,发现这个很好用,就用博客记录一下 1.引用NPOI包 2.导出 ...

  5. Sqlite学习笔记(一)&&编译安装

    Sqlite简介 sqlite是一个开源的嵌入式文件数据库,sqlite以动态链接库的方式供应用程序调用,所有的数据库对象都存储在同一个文件中. sqlite动态库非常小,最新的3.8.11版本也只有 ...

  6. lamp安装

    一.简介 什么是LAMPLAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而言都是在它所代表的方面 ...

  7. centos安装php php-fpm

    centos安装php php-fpm 1.下载php源码包 http://www.php.net/downloads.php 2 .安装php tar -xvf php-5.5.13.tar.bz2 ...

  8. mysql配置文件my.cnf详解

    原文地址:mysql配置文件my.cnf详解 作者:gron basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的 ...

  9. SharePoint2010新特性:InfoPath定义创建列表的界面

    在SharePoint2007的时候,自定义的列表可以使用CAML修改其展示页面,但是对于创建列表的页面,不容易自定义.现在在SharePoint2010中,增强了InfoPath Form Serv ...

  10. mysql备份还原

    备份java代码如下: /** * 备份单个数据库 * @param dbName 数据库名称 * @return 备份成功或者失败 */ @Override public boolean backu ...