oracle raise默认作用,Oracle:使用RAISE_APPLICATION_ERROR的情况是什么?
RAISE_APPLICATION_ERROR有两种用途.第一个是用我们自己的更有意义的消息来替换通用的Oracle异常消息.第二个是创建我们自己的异常条件,当Oracle不会抛出它们时.
以下过程说明了两种用法.它实施了一项业务规则,即将来不能雇用新雇员.它也覆盖了两个Oracle异常.一个是DUP_VAL_ON_INDEX,由EMP(ENAME)上的唯一键抛出.另一个是当EMP(MGR)和EMPNO(EMPNO)之间的外键被违反时(因为管理员必须是现有员工)而抛出的用户定义的异常.
create or replace procedure new_emp
( p_name in emp.ename%type
, p_sal in emp.sal%type
, p_job in emp.job%type
, p_dept in emp.deptno%type
, p_mgr in emp.mgr%type
, p_hired in emp.hiredate%type := sysdate )
is
invalid_manager exception;
PRAGMA EXCEPTION_INIT(invalid_manager, -2291);
dummy varchar2(1);
begin
-- check hiredate is valid
if trunc(p_hired) > trunc(sysdate)
then
raise_application_error
(-20000
, 'NEW_EMP::hiredate cannot be in the future');
end if;
insert into emp
( ename
, sal
, job
, deptno
, mgr
, hiredate )
values
( p_name
, p_sal
, p_job
, p_dept
, p_mgr
, trunc(p_hired) );
exception
when dup_val_on_index then
raise_application_error
(-20001
, 'NEW_EMP::employee called '||p_name||' already exists'
, true);
when invalid_manager then
raise_application_error
(-20002
, 'NEW_EMP::'||p_mgr ||' is not a valid manager');
end;
/
看起来如何
SQL> exec new_emp ('DUGGAN', 2500, 'SALES', 10, 7782, sysdate+1)
BEGIN new_emp ('DUGGAN', 2500, 'SALES', 10, 7782, sysdate+1); END;
*
ERROR at line 1:
ORA-20000: NEW_EMP::hiredate cannot be in the future
ORA-06512: at "APC.NEW_EMP", line 16
ORA-06512: at line 1
SQL>
SQL> exec new_emp ('DUGGAN', 2500, 'SALES', 10, 8888, sysdate)
BEGIN new_emp ('DUGGAN', 2500, 'SALES', 10, 8888, sysdate); END;
*
ERROR at line 1:
ORA-20002: NEW_EMP::8888 is not a valid manager
ORA-06512: at "APC.NEW_EMP", line 42
ORA-06512: at line 1
SQL>
SQL> exec new_emp ('DUGGAN', 2500, 'SALES', 10, 7782, sysdate)
PL/SQL procedure successfully completed.
SQL>
SQL> exec new_emp ('DUGGAN', 2500, 'SALES', 10, 7782, sysdate)
BEGIN new_emp ('DUGGAN', 2500, 'SALES', 10, 7782, sysdate); END;
*
ERROR at line 1:
ORA-20001: NEW_EMP::employee called DUGGAN already exists
ORA-06512: at "APC.NEW_EMP", line 37
ORA-00001: unique constraint (APC.EMP_UK) violated
ORA-06512: at line 1
请注意在EXCEPTIONS块中对RAISE_APPLICATION_ERROR的两次调用的不同输出.将可选的第三个参数设置为TRUE表示RAISE_APPLICATION_ERROR包含堆栈中的触发异常,这对诊断有用.
oracle raise默认作用,Oracle:使用RAISE_APPLICATION_ERROR的情况是什么?相关推荐
- oracle raise默认作用,postgreSQL之raise用法
raise函数 在PostgreSQL中,该函数用于打印字符串,类似于Java中的System.out.println(),Oracle中的dbms_output.put_line(). 在Postg ...
- oracle 分区字段作用,oracle表分区的作用
表空间及分区表的概念 表空间:(推荐学习:web前端视频教程) 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间 分区表: 当表中的数据量不断增大, ...
- oracle数据缓冲区作用,Oracle内存结构(02)--缓冲区
用户提交一个新SQL语句时,Oracle会分析(parse)该句SQL(硬解析),这个过程将耗费相对较多的时间.分析完毕后,oracle会将该SQL的分析结果给保存在Library Cache中,当数 ...
- oracle pga的作用,ORACLE PGA 的调整
PGA分两种管理模式: 手动PGA内存管理:用户指定排序区和散列区所使用的内存,每个连接使用相同的内存. 自动PGA内存管理:告诉Oracle可以使用的PGA的总量,由Oraclce根据系统负载决定具 ...
- oracle中having作用,oracle中having与where的区别
1.where 不能放在group by 的后面 2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE 3.WHERE 后面的条件中不能有聚集函 ...
- 禁用oracle的默认账户,Oracle EBS默认的账户
DB的默认账户及密码 system/manager sys/manager(或者change_on_install) apps/apps inv/inv wms/wms wip/wip po/po . ...
- oracle加上默认值,Oracle创建表,并添加默认值和备注
create table testemp( id varchar2(50) default sys_guid(), deptno varchar2(20) ,--部门编码 ename varchar2 ...
- oracle 分区 默认分区,Oracle 分区表分配分区
情况一:没有指定maxvalue alter table EQRECIPEITEMHISTORY_20171123 add partition p_201805 values less than (t ...
- oracle序列默认类型,ORACLE 序列-整理
序列(sequence)是ORACLE数据库库实现列自动增长的唯一方式. 创建序列语法如下: CREATE SEQUENCE sequence //创建序列名称 [INCREMENT BY n] // ...
- oracle的默认值,Oracle默认值
我有一个关于Oracle中PL/SQL函数默认值的简短问题.以这个程序为例,Oracle默认值 create or replace FUNCTION testFunction ( varNumber ...
最新文章
- CDH大数据集群安全风险汇总
- Alpha 冲刺(2/10)
- Json解析异常处理方式(JSONException: Value of type java.lang.String cannot be converted to JSONObject)...
- 【最短路】【SPFA】电车 (luogu 1346)
- PyTorch 1.0 中文文档:广播语义
- 没有人躲得过:被数学支配的噩梦
- Redux Toolkit 使用指南
- Mac下.DS_Store删除、禁止生成以及恢复生成方式
- 博客主之自我介绍(不长,随便瞅瞅)
- 知乎APP---案例分析
- 对于教育改革的一些省思
- 3.Go语言中常量,变量, 及其命名规则以及代码风格
- ios系统升级记录适配篇
- obs linux编译,教你如何在 Ubuntu 18.04/16.04 中安装 OBS Studio 21.1
- Error creating bean with name ‘dataSource‘: Error setting property,river for test database type [HSQ
- 机器学习完整项目实战附代码(一):探索型数据分析+特征工程+建模+报告
- php 字母数字下划线,CTF踩坑PHP编写一个不包含数字字母和下划线的后门
- linux trac apache,Linux环境下安装trac图文教程
- MYsql建立学生成绩表
- 4.java基础-static