实例:
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 PL/SQL编程中,异常处理是一项非常重要的功能。它可以帮助开发者捕获并处理程序运行时可能发生的错误情况,确保应用程序能够稳定可靠地运行...
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系统已经内置的一些常见错误,它们都有对应的错误代码(ORA-xxx)。下面,我们将深入探讨一些常见的...
本文将详细介绍Oracle自定义函数的定义、使用方法以及一些高级特性。 #### 二、基本语法与定义 1. **定义函数的基本语法**: ```sql CREATE [OR REPLACE] FUNCTION function_name (参数列表) RETURN 返回类型 ...
在 Oracle 数据库中,自定义函数是一种非常重要的特性,允许用户根据需求创建自己的功能模块,以扩展数据库的内置功能。本文将详细讲解如何创建、调用和管理自定义函数,以及讨论它们在实际应用中的优缺点。 一、...
本篇文章将探讨Oracle中的预定义异常与自定义异常的应用。 预定义异常是Oracle已经为我们准备好并封装的一系列常见错误,如NUM_ERROR(数学错误)、NO_DATA_FOUND(未找到数据)、TOO_MANY_ROWS(过多行)等。这些...
错误处理:内置了异常处理机制,能够智能识别并处理非标准输入,避免程序运行中断。 数据分析:在进行大数据分析或报告生成时,确保用户信息的安全,符合行业规范。 数据迁移与备份:在数据迁移或备份过程中,对敏感...
用户自定义异常由开发者显示定义,在 PL/SQL 块中传递信息以控制对于应用的错误处理。 Oracle 提供了预定义的内部异常,如 SELECT INTO 语句不返回行时产生的 NO_DATA_FOUND 异常、除数为零的 ZERO_DIVIDE 异常等...
通过上述介绍,我们可以看到,ORACLE提供了一套完整的异常处理机制,包括预定义异常、非预定义异常和用户自定义异常。合理地使用这些异常处理机制,不仅能够提高程序的健壮性和可用性,还能够提升用户体验。在实际...
Oracle提供了预定义的系统异常和用户自定义异常。 2. 异常处理机制: Oracle的异常处理主要包括两个部分:异常的声明和捕获。在PL/SQL块中,你可以使用`BEGIN...EXCEPTION...END`结构来定义异常处理。在`EXCEPTION`...
总结来说,Oracle异常处理是通过预定义和自定义异常来实现的,它增强了程序对错误的响应能力,帮助开发者在遇到问题时能够有序地处理,避免程序崩溃,保证系统的正常运行。理解并熟练掌握Oracle的异常处理机制,对于...
本篇文章将深入探讨如何在C#中调用Oracle的UDT(用户定义类型)以处理自定义结构数组类型,并提供相关的源代码示例。 UDT在Oracle数据库中允许我们创建自定义的数据类型,这些类型可以包含复杂的数据结构,如结构体...
自定义异常则允许开发者创建自己的异常类型,以处理与 Oracle 错误无关的特定情况。定义自定义异常通常使用 `RAISE` 语句,如: ```sql DECLARE my_exception EXCEPTION; BEGIN IF some_condition THEN RAISE my_...
在Oracle SQL和PL/SQL中,异常分为预定义异常(如NO_DATA_FOUND,TOO_MANY_ROWS等)和用户自定义异常。预定义异常通常对应于特定的数据库操作错误,而自定义异常则允许开发者根据业务需求创建自己的异常类。 异常...
这些异常可以是预定义的(系统异常)或自定义的(用户异常)。 - **处理**:使用`BEGIN...EXCEPTION...END`块来捕获和处理异常。例如: ```sql DECLARE cursor_name CURSOR FOR SELECT * FROM non_existent_...
注意:普通的查询语句不会出现异常,只有使用into对变量进行赋值的时候才会发生异常 --系统变量: notfound -->...用户自定义异常写在:declare里,如: set serveroutput on declare no_result ex
Oracle 存储过程 exception 异常处理大全及实例经典最终 Oracle 存储过程 exception 异常处理大全及实例经典最终是 Oracle 数据库中存储过程的异常处理机制。异常处理是指在程序执行过程中出现的错误或未预料到的...
本资源包含一个名为"shell脚本可配置备份oracle数据库异常sendEmail25发邮件"的压缩包,它提供了一个自动化解决方案,用于定期备份Oracle数据库并在出现异常时发送通知邮件。下面我们将详细探讨其中涉及的关键知识点...