`

ORACLE自定义异常

阅读更多

实例:

CREATE OR REPLACE PROCEDURE test_Exception
(
  ParameterA IN varchar2,
  ParameterB IN varchar2,
  ErrorCode  OUT varchar2  --返回值,错误编码
)
AS
  /*以下是一些变量的定义*/
  V1    NUMBER;
  V2    nvarchar2(20);
  V3    NUMBER;    
  APP_EXP  EXCEPTION;  --自定义异常
BEGIN
  ErrorCode :='';
  IF (ParameterA=ParameterB) THEN
     ErrorCode := 'ParameterA = ParameterB';
     RAISE APP_EXP;     -- 抛出异常
  END IF;
EXCEPTION
  WHEN APP_EXP THEN     --在处理异常
    RAISE_APPLICATION_ERROR(-20001,ErrorCode);
  WHEN OTHERS THEN 
      RAISE_APPLICATION_ERROR(-20001,'未知异常');
END;

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

        RAISE_APPLICATION_ERROR 的声明:

        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。
        再举实例如下:阻止小于18岁的用户增加到数据库 employee 表中

CREATE OR REPALCE TRIGGER minimun_age_check
BEFORE INSERT ON employee
FOR EACH ROW
BEGIN
        IF ADD_MONTHS( :new.birth_date, 18*12) > SYSDATE
        THEN
               RAISE_APPLICATION_ERROR(-20001, 'Employees must at least eighteen years of age.');
        END IF;
END;

        下面我们编写一个客户端程序,为了简单,同样用PL/SQL调用

DECLARE
    no_babies_allowed EXCEPTION;
       /*将名称与用于触发器中的错误号码关联起来*/
    PRAGMA EXCEPTION_INIT(no_babies_allowed, -20001);
BEGIN
    INSERT INTO employee .;
EXCEPTION
     WHEN no_babies_allowed THEN
         /*
         || SQLERRM 将传递给内置过程 RAISE_APPLICATION_ERROR 的消息返回
       */
          DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
分享到:
评论

相关推荐

    oracle自定义异常

    oracle自定义异常,里面包括自定义异常的示例,分享一下!

    Oracle存储过程中自定义异常

    ORACLE 用户自定义异常小例子  1.进入pl/sql测试窗口  2.执行语句  declare  empname varchar2(255);  customize_exp EXCEPTION; –自定义异常  begin  FOR c IN (select d.* from scott.dept d) ...

    详解Oracle自定义异常示例

    1.弹出错误框: 示例代码: declare v_count number; begin select count(*) into v_count from dept; if v_count < 10 then raise_application_error(-20001,'数量小于10'); end if; end;...ra

    Oracle Exception汇总(自定义Oracle异常)

    Oracle Exception汇总(自定义Oracle异常) 使用方法举例: Exception When no_data_found then Dbms_output.put_line(‘no_data_found’); ACCESS_INTO_NULL 为对象赋值前必需初始化对象。对应ORA-06530错误。 CASE...

    oracle异常(预定义异常,自定义异常)应用介绍

    在开发过程中,经常会遇到一些测试,这时候就会想了解测试的过程,然后再根据过程分析代码错在哪里,这种情况下,就需要用到自定义异常,需要了解的朋友可以参考本

    Oracle用户自定义异常实现过程解析

    注意:普通的查询语句不会出现异常,只有使用into对变量进行赋值的时候才会发生异常 --系统变量: notfound -->...用户自定义异常写在:declare里,如: set serveroutput on declare no_result ex

    如何利用Oracle命令解决函数运行错误

    自定义了一个 Oracle 函数。编译正常;使用 PL/SQL Developer 的 Test 窗口模式,测试通过。但 Java 直接调用失败;使用 PL/SQL Developer 的 SQL 窗口模式,执行失败。 没有有效的错误提示信息。 2 分析 肯定是...

    Oracle中异常处理

     能够检测并且进行错误处理的叫做异常,一般分为用户自定义异常,系统预定义异常。  预定义异常  一:除数是0的系统异常  declare  v_number Number(2):=10;  v_zero Number(2):=0;  v_result Number...

    Oracle数据库学习指南

    15.PLSQL异常处理初步 16.SQL语句性能调整原则 17.创建和使用分区的表 18.基于成本的优化器一般错误概念和问题 19.Delphi 3_0中连接数据库的三种方式 20.远程数据库的访问 21.监控数据库性能的SQL 22...

    Oracle课件.pdf

    第1章 概述 1. BI介绍 2. Oracle介绍与安装 2.1 Oracle安装 2.2 Oracle 默认用户 2.3 服务器连接 3. PL/SQL Developer工具 ...4.创建自定义函数 5.异常处理 6.同步数据 7.创建包 8.创建日志 第6章

    ORACLE11G宝典.rar 是光盘里面的内容,书太厚咧没法影印啊

     4.5.4 自定义异常  4.5.5 使用sQLCODE和sQLERRIVI  4.5.6 使用RAISEAPPLICATIONERROR  4.6 过程与函数  4.6.1过程  4.6.2 函数  4.6.3 管理过程与函数  4.6.4 过程与函数的比较  4.7 程序包  ...

    oracle学习资料

    §5.1.3 用户自定义的异常处理 13 §5.1.4 用户定义的异常处理 13 §5.2 异常错误传播 13 §5.2.1 在执行部分引发异常错误 13 §5.2.2 在声明部分引发异常错误 13 §5.3 异常错误处理编程 13 §5.4 在 PL/SQL 中使用...

    网上购物系统struts+Oracle10.2

    struts做的一个网上购物系统的练习,包括了以下几个方面的内容: 1.struts国际化处理, 2.动态DynaValidatorForm的用法, ...5.自定义异常处理, 6.JNDI+Oracle10.2数据库连接池的配置 7.iterate迭代器和JAVA泛型的用法

    Oracle 10g 开发与管理

    (三) 用户自定义异常 68 3.处理异常 68 Exception 68 (四)异常传播 68 1.自定义异常的传播 68 2.声明中的异常 68 (五)使用SQLCODE和SQLERRM 68 第八讲 过程、函数和程序包 72 8.1存储过程(procedure) 72 1.创建 72 2...

    spring.net oracle 事务控制

    基于student表,实现对表的增、删、改、删,并且支持事务控制,事务控制是基于自定义的异常拦截

    plsql_oracle 编程

    §5.1.3 用户自定义的异常处理 13 §5.1.4 用户定义的异常处理 13 §5.2 异常错误传播 13 §5.2.1 在执行部分引发异常错误 13 §5.2.2 在声明部分引发异常错误 13 §5.3 异常错误处理编程 13 §5.4 在 PL/SQL 中使用...

    oracle存储过程、游标、函数、PL/SQL块

    包含oracle存储过程的增、删、查、改 %type、%rowtype的使用 自定义函数 PL/SQL块

    plsql_oracle 8i 编程讲义

    §5.1.3 用户自定义的异常处理 13 §5.1.4 用户定义的异常处理 13 §5.2 异常错误传播 13 §5.2.1 在执行部分引发异常错误 13 §5.2.2 在声明部分引发异常错误 13 §5.3 异常错误处理编程 13 §5.4 在 PL/SQL 中使用...

Global site tag (gtag.js) - Google Analytics