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

捕获异常

语法:

首先定义异常:

<异常情况>  EXCEPTION;

抛出异常:

  raise  <异常情况>;

处理异常:

  1. EXCEPTION
  2. WHEN excepttion_name1 then
  3. ........
  4. WHEN excepttion_name2 then
  5. ........
  6. WHEN excepttion_name3 then
  7. ........
  8. End;

例子:

  1. declare
  2. a int:=0;
  3. b int:=1;
  4. ex_1 exception;
  5. ex_2 exception;
  6.  
  7. begin
  8. if a=0 then
  9. raise ex_1;
  10. end if;
  11.  
  12. if b=1 then
  13. raise ex_2;
  14. end if;
  15.  
  16. exception
  17. when ex_1 then
  18. DBMS_OUTPUT.put_line('捕获了错误1');
  19. when ex_2 then
  20. DBMS_OUTPUT.put_line('捕获了错误2');
  21. end;

输出:

  1. 捕获了错误1

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

利用OhtERS处理所有的错误

  1. declare
  2. a int:=0;
  3. ex_1 exception;
  4. begin
  5. if a=0 then
  6. raise ex_1;
  7. end if;
  8.  
  9. exception
  10. when others then
  11. DBMS_OUTPUT.put_line('捕获了全局错误');
  12.  
  13. end;

输出:

抛出异常

RAISE_APPLICATION_ERROR 函数

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

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

例子:让一个数不能为0

  1. declare
  2. a int:=0;
  3. begin
  4. if a=0 then
  5. RAISE_APPLICATION_ERROR(-20001,‘数值不能为0’);
  6. end if;
  7. 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. Kotlin语法(其他)

    三.其他 [TOC] 1. 多重声明 有时候可以通过给对象插入多个成员函数做区别是很方便的: val (name, age) = person 多重声明一次创建了多个变量.我们声明了俩个新变量:nam ...

  2. 如何让光标处于EditText的末尾

    经测试发现,如果EditText预先有内容,光标自然会在文字的末尾 . 但是如果预先内容为空,然后设置好内容,这种情况下光标自然会在文字的开头,所以这种情况下可以这样做让光标位于末尾: editTex ...

  3. java 中 return 的两种常见的用法

    一:return语句总是用在方法中,有两个作用: 一个是返回方法指定类型的值(这个值总是确定的), 一个是结束方法的执行(仅仅一个return语句). 二:实例1 -- 返回一个String priv ...

  4. NSFileHandle

    /* 文件处理句柄要完成的工作:  相当于C中的文件操作,诸如 打开,读,写,关闭,修改文件偏移量等行为 类名:   NSFileHandle 注意: 操作句柄时,重点把握文件的偏移量在哪个位置 重点 ...

  5. Xcode插件

    Xcode插件-2016-03-10Xcode插件管理神器 —— Alcatraz 说明 Alcatraz是一个管理Xcode开源包的,你可以用它查找安装你想要的插件,模板以及配色方案,而你无需手动克 ...

  6. 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

    Ubuntu 12.04 64bit系统下安装的vsftpd,在登陆时提示500 OOPS: vsftpd: refusing to run with writable root inside chr ...

  7. 初学Mahout测试kmeans算法

    预备工作: 启动hadoop集群 准备数据 Synthetic_control.data数据集下载地址http://archive.ics.uci.edu/ml/databases/synthetic ...

  8. tomcat常用配置

    一. 增加内存,防止JVM内存溢出 1. 以服务的方式启动时 进入"tomcat安装路径\bin"目录下,打开service.bat文件,找到"--JvmOptions ...

  9. 注解学习(模仿springMvc的注解注入方式)

    最近在看springMvc的源码,看到了该框架的注入注解的部分觉的有点吃力,可能还是对注解的方面的知识还认识的不够深刻,所以特意去学习注解方面的知识.由于本人也是抱着学习的态度来阅读源码,若文章在表述 ...

  10. Fatal error: Call-time pass-by-reference has been removed

    下面的代码报错:Fatal error: Call-time pass-by-reference has been removed function myFunc($arg) { do somethi ...