首页 > 数据库 >Oracle 异常处理

Oracle 异常处理

时间:2023-07-17 10:13:22浏览次数:35  
标签:exception raise 处理 application 20001 error Oracle 异常

在编程语言中异常处理是必不可少的部分,plsql 也不例外,一个良好的提示能让调试和排查中少走很多弯路,简单记录一下oracle 异常处理中常用的部分:

  • pragma 用来定义异常标识符(系统已经定义了大部分异常标识符,即常量)
    语法:
    declare e_20001;
  • 初始化异常变量
pragma exception_init(e_20001,-20001);  --对异常变脸e_20001 进行初始化
  • 引发异常 (触发异常后,异常代码会进入异常处理程序)
    raise e_20001;
  • 异常处理部分
exception
  when e_20001 then
  raise_application_error(-20001,'错误说明部分')
  when others then
  raise_application_error(-20002,'其他错误说明'||sqlerrm);

示例:

1.创建触发器(在emp员工信息表上)

create or replace trigger tr_insert_emp
before insert on emp for each row
declare
e_20001 exception; --异常标识符
e_20003 exception; --重复插入
rcount integer;
pragma exception_init(e_20001,-20001);
begin
  select count(1) into rcount from dept where deptno=:new.deptno;
  if rcount<1 then
    raise e_20001;
 end if;
 select count(1) into rcount from emp where empno=:new.empno or 
 (ename=:new.ename and deptno=:new.deptno);
if rcount>0 then 
  raise e_20003;
end if;
exception 
  when e_20001 then
    raise_application_error(-20001,'该部门不存在,不能插入没有部门的员工信息!');
  when e_20003 then
    raise_application_error(-20003,'该员工已存在,不能重复插入!');
   when others then
      raise_application_error(-20002,'插入员工失败!');
end;

2.插入数据

  insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)
  values(1003,'测试1','程序员',6700,to_date('1996-05-01','yyyy-mm-dd'),1280,200,40);
  • 效果
    image

标签:exception,raise,处理,application,20001,error,Oracle,异常
From: https://www.cnblogs.com/sundh1981/p/17559216.html

相关文章

  • 【.Net Core】生成项目处理器架构MSIL与目标项目架构 "AMD64" 不一致
    修复方法在当前项目的项目文件中<PropertyGroup>标签中添加架构(按照需要,可以只需要保留一个):<PropertyGroup><Platforms>AnyCpu;x64</Platforms></PropertyGroup>在编译配置中,修改当前项目(或者目标项目)的编译架构:注意,Debug和Release都需要修改......
  • 【暑假题目】20230712 帧处理
    帧处理题目在物联网应用中需要经常处理数据帧,请你写一段处理数据帧的代码将收到的数据进行解析输出提示:1、数据帧的长度不定,但是帧头帧尾是固定的2、数据帧的参数数量不定,请注意3、每次收到的数据可能不是完整的一帧,但是不能把不完整的数据帧丢弃,应该等待到下一完整帧接收到后才......
  • 人工智能自然语言处理:N-gram和TF-IDF模型详解
    人工智能自然语言处理:N-gram和TF-IDF模型详解1.N-gram模型N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。每一个字节片段称为gram,对所有gram的出现频度进行统计,并且按照事先设......
  • redis重启数据丢失怎么处理
    当Redis重启或者意外崩溃时,可能会导致数据丢失。这是因为Redis默认配置下,数据仅保存在内存中,并且只有在接收到持久化命令时才会将数据写入磁盘。因此,为了处理Redis重启数据丢失的问题,我们可以采取以下几个步骤:配置持久化在Redis配置文件(redis.conf)中,我们可以通过设置save参数......
  • 第二节 处理数据
    2.1简单变量首先我们要了解变量的属性:信息存在哪里要存储什么值存储何种信息的类型2.1.1变量名命名规则如下:1.在名称中只能使用字母字符、数字和下划线2.名称的第一个字符不能是数字3.区分大小写字符4.不能将C++关键字作名称5.以一个下划线开头的名称被保留给实......
  • Java处理子父级菜单的方式二
    处理存在子父级关系的数据是写代码的过程中常见的操作,前面讲解过使用递归的方法来做,可以参考这篇博客https://www.cnblogs.com/yilangcode/p/16831867.html今天来聊聊一种新的处理方式。使用List集合多轮遍历,添加子父级菜单信息。建表SQLDROPTABLEIFEXISTS`sa_menu`......
  • 高并发如何处理???
    -高并发:以后这个系统的用户肯定越来越多,我们要考虑高并发的问题。最主要的是缓存和负载均衡!!!静态资源存储在云端,并做cdn加速。Css和js做压缩再存储云端。CDN加速:尽可能避开互联网上可能影响数据传输的速度和稳定性的瓶颈和环节,使内容传输更快,更稳定。CND加速需要依靠各个网络节......
  • Oracle 12c for Linux安装手册
    Oracle安装前配置关闭防火墙及selinux、修改主机名和host文件vi/etc/selinux/configselinux=disabledserviceiptablesstopchkconfig iptables off/etc/sysconfig下面的network文件HOSTNAME=hostname在/etc/hosts文件最后添加x.x.x.xhostname安装依赖包yum-......
  • Nginx双层域名时 iframe嵌入/跳转页面的处理过程
    Nginx双层域名时iframe嵌入/跳转页面的处理过程背景两年前在上一家公司内遇到一个Nginx的问题当时的场景是双层nginx代理时(一层域名侧,一层拆分微服务的网关层)程序里面会打开一个嵌套的iframe,便于进行缩放.但是此时因为只能就近获取第二层反向代理的upstream的域......
  • 运筹学教学最便利的处理软件——WinQSB(可惜)
    WinQSB是QuantitativeSystemsforBusiness的缩写,WinQSB是一款功能强大的运筹学工具,可以为你提供运筹管理,教学演示、函数求解等功能。WinQSB根据不同种类的决定划分为多种功能模块。其中包含:为此将WinQSB求解运筹学相关问题的使用方法简介如下。内容包括:线性规划划及整数规划、目......