当前位置:首页 > 开发 > 数据库 > 正文

ORACLE自定义异常

发表于: 2014-03-30   作者:bijian1013   来源:转载   浏览:
摘要: 实例: CREATE OR REPLACE PROCEDURE test_Exception ( ParameterA IN varchar2, ParameterB IN varchar2, ErrorCode OUT varchar2 --返回值,错误编码 ) AS /*以下是一些变量的定义*/ V1 NUMBER; V2 nvarc

实例:

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自定义异常

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
在这里讲一下包的概念, 二话不说上个例子 包头: create or replace package pck_test is procedur
自定义异常 碰到异常时, 如果只是logger.error一下, 没有处理的话,错误很难定位(前台页面中会出现
使用oracle系统游标处理数据 实例代码: --set serveroutput on; create or replace procedure spli
public class ExceptionTest { public static void main(String [] args){ int result; Test test =
//仅作为学习笔记 /* 因为项目中会出现特有的问题 而这些问题并未被java所描述并封装对象 所以对于
1.手动抛出异常 手动抛出异常要用到throw、throws语句。 throw语句: 用于显式地引发异常,执行流程
用过安卓手机的用户以及安卓开发者们会时长碰到程序异常退出的情况,普通用户遇到这种情况,肯定非
1. 所谓自定义异常,通常就是定义了一个继承自 Exception 类的子类,那么这个类就是一个自定义异常
oracle自定义函数,用来查看当前的用户名 1.自定义函数 create or replace function funone return
---恢复内容开始--- 相信很多朋友在学习java中,遇到的最头痛的莫过于处理程序异常,struts2也不例
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号