详解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; 

执行结果:

2.控制台显示:

示例代码:

declare
v_count number;
my_exp exception;
begin
select count(*) into v_count from dept;
if v_count < 10 then
raise my_exp;
end if;
exception
when my_exp then
dbms_output.put_line('数量小于10');
when others then
dbms_output.put_line('其他异常');
end;

执行结果:

PS:ORACLE 用户自定义异常小例子

CREATE OR REPLACE PROCEDURE test_Exception_byLeejin
(
ParameterA IN varchar,
ParameterB IN varchar,
ErrorCode OUT varchar --返回值,错误编码
)
AS
/*以下是一些变量的定义*/
V NUMBER;
V nvarchar();
V 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(-,ErrorCode);
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-,'未知异常');
END;
(0)

相关推荐

  • Oracle9i数据库异常关闭后的启动

    正在看的ORACLE教程是:Oracle9i数据库异常关闭后的启动.Oracle shutdown的时候突然断电,导致使用sql/plus启动时无法连接到数据库,具体描述为: connection can not permitted, shut in progress. 到dos 提示符 键入: c:\> sqlplus /nolog 显示: sql/plus: Realease9.0.2--..all rights reserved sql> connect /as sysdba 显示已连接

  • Oracle中RAISE异常深入分析

    有三种方式抛出异常 1.通过PL/SQL运行时引擎 2.使用RAISE语句 3.调用RAISE_APPLICATION_ERROR存储过程 当数据库或PL/SQL在运行时发生错误时,一个异常被PL/SQL运行时引擎自动抛出.异常也可以通过RAISE语句抛出 RAISE exception_name; 显式抛出异常是程序员处理声明的异常的习惯用法,但RAISE不限于声明了的异常,它可以抛出任何任何异常.例如,你希望用TIMEOUT_ON_RESOURCE错误检测新的运行时异常处理器,你只需简单的在

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

    在开发过程中,经常会遇到一些测试,这时候就会想了解测试的过程,然后再根据过程分析代码错在哪里,这种情况下,就需要用到自定义异常,需要了解的朋友可以参考本文 先声明一个异常 Java代码 biz_exception exception; 再抛出来 Sql代码 复制代码 代码如下: p_RETCODE := '-1'; p_retInfo := '已生成工资+社保类型账单,请不要重复生成.'; raise biz_exception; 这样存储过程就走到最后的抓取异常地方 Sql代码 复制代码 代码

  • Oracle 9i 数据库异常关闭后的启动

    正在看的ORACLE教程是:Oracle 9i 数据库异常关闭后的启动. Oracle 数据库启动 Oracle shutdown的时候突然断电,导致使用sql/plus启动时无法连接到数据库,具体描述为: connection can not permitted, shut in progress. 到dos 提示符 键入: c:\> sqlplus /nolog 显示: sql/plus: Realease9.0.2--..all rights reserved sql> connect 

  • win7安装oracle10g 提示程序异常终止 发生未知错误

    oracle 10g 在win7下安装,选择高级选项,提示程序异常终止,发生未知错误 修改Oracle 10G\database\stage\prereq\db\refhost.xml 在 </SYSTEM> <CERTIFIED_SYSTEMS>后面添加 <!--Microsoft Windows 7--> <OPERATING_SYSTEM> <VERSION VALUE="6.1"/> </OPERATING_SY

  • Oracle ORA-22908(NULL表值的参考)异常分析与解决方法

    场景如下: --创建类型(type)create or replace type list_obj is table of number;--创建表结构create table test( name varchar2(30) primary key check(regexp_like(name,'^([a-z]|[0-9]|_)+$')), id number not null, version_list list_obj) nested table version_list store as

  • 详解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; 执行结果: 2.控制台显示: 示例代码: declare v_count number; my_exp exception; begin select count(*) into

  • 详解Oracle游标的简易用法

    下面看下Oracle游标的简易用法,具体代码如下所示: create or replace procedure NW_DelYW(iOPERATION_ID number, sUserID varchar2) is sCurDJBH yw_operation_link.djbh%type; cursor table_yw(ywid yw_operation.id%type) is select * from yw_operation_link t1 where t1.operation_id =

  • Java中的静态内部类详解及代码示例

    1. 什么是静态内部类 在Java中有静态代码块.静态变量.静态方法,当然也有静态类,但Java中的静态类只能是Java的内部类,也称为静态嵌套类.静态内部类的定义如下: public class OuterClass { static class StaticInnerClass { ... } } 在介绍静态内部类之前,首先要弄清楚静态内部类与Java其它内部类的区别. 2. 内部类 什么是内部类?将一个类的定义放在另一个类的内部,就是内部类.Java的内部类主要分为成员内部类.局部内部类.

  • C语言指针详解及用法示例

    新手在C语言的学习过程中遇到的最头疼的知识点应该就是指针了,指针在C语言中有非常大的用处.下面我就带着问题来写下我对于指针的一些理解. 指针是什么? 指针本身是一个变量,它存储的是数据在内存中的地址而不是数据本身的值.它的定义如下: int a=10,*p; p=&a int a=10; int *p=&a; 首先我们可以理解 int* 这个是要定义一个指针p,然后因为这个指针存储的是地址所以要对a取地址(&)将值赋给指针p,也就是说这个指针p指向a. 很多新手都会对这两种定义方法

  • 详解oracle中通过触发器记录每个语句影响总行数

    详解oracle中通过触发器记录每个语句影响总行数 需求产生: 业务系统中,有一步"抽数"流程,就是把一些数据从其它服务器同步到本库的目标表.这个过程有可能 多人同时抽数,互相影响.有测试人员反应,原来抽过的数,偶尔就无缘无故的找不到了,有时又会出来重复行.这个问题产生肯定是抽数逻辑问题以及并行的问题了!但他们提了一个简单的需求:想知道什么时候数据被删除了,什么时候插入了,我需要监控"表的每一次变更"! 技术选择: 第一就想到触发器,这样能在不涉及业务系统的代码情况

  • Java中的HashSet详解和使用示例_动力节点Java学院整理

    第1部分 HashSet介绍 HashSet 简介 HashSet 是一个没有重复元素的集合. 它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素. HashSet是非同步的.如果多个线程同时访问一个哈希 set,而其中至少一个线程修改了该 set,那么它必须 保持外部同步.这通常是通过对自然封装该 set 的对象执行同步操作来完成的.如果不存在这样的对象,则应该使用 Collections.synchronizedSet 方法来"包装" set.

  • 详解Oracle调试存储过程

    详解Oracle调试存储过程 一 调试关键步骤 1.在要调试的存储过程右键,选择编辑以进行调试,截图如下: 2.点击小瓢虫,弹出调试窗口,截图如下: 3.输入7839员工编号,点击确认,进行调试,截图如下: 4.该截图说明权限不够,需要添加scott用户的权限. 5.增加权限语句如下: SQL> show user USER 为"SCOTT" SQL> connect system 输入口令: 已连接. SQL> show user USER 为"SYSTE

  • 详解Oracle在out参数中访问光标

    详解Oracle在out参数中访问光标 一 概念 申明包结构 包头:负责申明 包体:负责实现 二 需求 查询某个部门中所有员工的所有信息 三 包头 CREATE OR REPLACE PACKAGE MYPACKAGE AS type empcursor isref cursor; procedure queryEmplist(dno in number,emplist out empcursor); END MYPACKAGE; 四 包体 包体需要实现包头中声明的所有方法 CREATE OR

  • Java 中的HashMap详解和使用示例_动力节点Java学院整理

    第1部分 HashMap介绍 HashMap简介 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射. HashMap 继承于AbstractMap,实现了Map.Cloneable.java.io.Serializable接口. HashMap 的实现不是同步的,这意味着它不是线程安全的.它的key.value都可以为null.此外,HashMap中的映射不是有序的. HashMap 的实例有两个参数影响其性能:"初始容量" 和 "加载因子&quo

  • Java中LinkedList详解和使用示例_动力节点Java学院整理

    第1部分 LinkedList介绍 LinkedList简介 LinkedList 是一个继承于AbstractSequentialList的双向链表.它也可以被当作堆栈.队列或双端队列进行操作. LinkedList 实现 List 接口,能对它进行队列操作. LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用. LinkedList 实现了Cloneable接口,即覆盖了函数clone(),能克隆. LinkedList 实现java.io.Serial

随机推荐