`

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 PL/SQL编程中,异常处理是一项非常重要的功能。它可以帮助开发者捕获并处理程序运行时可能发生的错误情况,确保应用程序能够稳定可靠地运行...

    Oracle存储过程中自定义异常

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

    详解Oracle自定义异常示例

    Oracle自定义异常是数据库操作中处理错误的一种机制,它允许开发者根据特定的业务逻辑定义自己的异常类型,从而更精确地控制程序的流程。在Oracle中,当预定义的异常无法满足特定需求时,自定义异常就显得尤为重要。...

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

    Oracle数据库在处理错误和异常时有一套完整的机制,这些异常主要分为预定义异常和自定义异常。预定义异常是Oracle系统已经内置的一些常见错误,它们都有对应的错误代码(ORA-xxx)。下面,我们将深入探讨一些常见的...

    oracle自定义函数总结

    本文将详细介绍Oracle自定义函数的定义、使用方法以及一些高级特性。 #### 二、基本语法与定义 1. **定义函数的基本语法**: ```sql CREATE [OR REPLACE] FUNCTION function_name (参数列表) RETURN 返回类型 ...

    14.Oracle自定义函数1

    在 Oracle 数据库中,自定义函数是一种非常重要的特性,允许用户根据需求创建自己的功能模块,以扩展数据库的内置功能。本文将详细讲解如何创建、调用和管理自定义函数,以及讨论它们在实际应用中的优缺点。 一、...

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

    本篇文章将探讨Oracle中的预定义异常与自定义异常的应用。 预定义异常是Oracle已经为我们准备好并封装的一系列常见错误,如NUM_ERROR(数学错误)、NO_DATA_FOUND(未找到数据)、TOO_MANY_ROWS(过多行)等。这些...

    手机号安全脱敏工具方案:Oracle自定义函数实现中间四位替换为4位星号

    错误处理:内置了异常处理机制,能够智能识别并处理非标准输入,避免程序运行中断。 数据分析:在进行大数据分析或报告生成时,确保用户信息的安全,符合行业规范。 数据迁移与备份:在数据迁移或备份过程中,对敏感...

    Oracle 存储过程异常处理.docx

    用户自定义异常由开发者显示定义,在 PL/SQL 块中传递信息以控制对于应用的错误处理。 Oracle 提供了预定义的内部异常,如 SELECT INTO 语句不返回行时产生的 NO_DATA_FOUND 异常、除数为零的 ZERO_DIVIDE 异常等...

    ORACLE 异常错误处理

    通过上述介绍,我们可以看到,ORACLE提供了一套完整的异常处理机制,包括预定义异常、非预定义异常和用户自定义异常。合理地使用这些异常处理机制,不仅能够提高程序的健壮性和可用性,还能够提升用户体验。在实际...

    oracle之异常学习

    Oracle提供了预定义的系统异常和用户自定义异常。 2. 异常处理机制: Oracle的异常处理主要包括两个部分:异常的声明和捕获。在PL/SQL块中,你可以使用`BEGIN...EXCEPTION...END`结构来定义异常处理。在`EXCEPTION`...

    oracle 异常处理剖析共.pdf

    总结来说,Oracle异常处理是通过预定义和自定义异常来实现的,它增强了程序对错误的响应能力,帮助开发者在遇到问题时能够有序地处理,避免程序崩溃,保证系统的正常运行。理解并熟练掌握Oracle的异常处理机制,对于...

    c#调用Oracle UDT自定义结构数组类型源代码

    本篇文章将深入探讨如何在C#中调用Oracle的UDT(用户定义类型)以处理自定义结构数组类型,并提供相关的源代码示例。 UDT在Oracle数据库中允许我们创建自定义的数据类型,这些类型可以包含复杂的数据结构,如结构体...

    oracle异常处理

    自定义异常则允许开发者创建自己的异常类型,以处理与 Oracle 错误无关的特定情况。定义自定义异常通常使用 `RAISE` 语句,如: ```sql DECLARE my_exception EXCEPTION; BEGIN IF some_condition THEN RAISE my_...

    ch03 oracle异常异常与动态sql

    在Oracle SQL和PL/SQL中,异常分为预定义异常(如NO_DATA_FOUND,TOO_MANY_ROWS等)和用户自定义异常。预定义异常通常对应于特定的数据库操作错误,而自定义异常则允许开发者根据业务需求创建自己的异常类。 异常...

    ORACLE 游标 异常 存储过程

    这些异常可以是预定义的(系统异常)或自定义的(用户异常)。 - **处理**:使用`BEGIN...EXCEPTION...END`块来捕获和处理异常。例如: ```sql DECLARE cursor_name CURSOR FOR SELECT * FROM non_existent_...

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

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

    Oracle_存储过程exception异常处理大全及实例经典最终.docx

    Oracle 存储过程 exception 异常处理大全及实例经典最终 Oracle 存储过程 exception 异常处理大全及实例经典最终是 Oracle 数据库中存储过程的异常处理机制。异常处理是指在程序执行过程中出现的错误或未预料到的...

    shell脚本可配置备份oracle数据库异常sendEmail25发邮件.rar

    本资源包含一个名为"shell脚本可配置备份oracle数据库异常sendEmail25发邮件"的压缩包,它提供了一个自动化解决方案,用于定期备份Oracle数据库并在出现异常时发送通知邮件。下面我们将详细探讨其中涉及的关键知识点...

Global site tag (gtag.js) - Google Analytics