当前位置: 首页 > news >正文

oracle的异常处理

oracle提供了预定义例外、非预定义例外和自定义例外三种类型。其中:

l预定义例外用于处理常见的oracle错误;

l非预定义例外用于处理预定义所不能处理的oracle错误;

l自定义例外处理与oracle错误无关的其他情况。

Oracle代码编写过程中,如果捕捉例外则会在plsql块内解决运行错误,否则将错误传递到调用环境。

常用预定义例外:

为了处理各种常见的oracle错误,plsql为开发人员提供了二十多个预定义例外,每个预定义例外都对应一个oracle系统错误。

Access_info_null(ora-06530):当访问没有初始化的对象时触发。

Case_not_found(ora-06592):在case过程中when后没有包含必要的条件分支并且没有else子句,则会触发本异常。

Collection_is_null(ora-06531):访问未初始化的集合元素(嵌套表或者varray)。

Cursor_already_open(ora-06511):重新打开已经打开的游标。

Dup_val_on_index(ora-00001):当中唯一索引所对应的列上键入重复值时。

Invalid_cursor(ora-01001):试图在不合法的游标上执行操作时,譬如没打开游标就提取内容。

Invalid_number(ora-01722):当试图将非法的字符串转换为数字类型时。

No_data_found(ora-01403):执行select into未返回行,或者引用了索引表未初始化的元素时。

Too_many_rows(ora-01422):执行select into返回超过一行数据时。

Zero_divide(ora-01476):0作为被除数时。

Subscript_beyond_count(ora-06533):使用嵌套表或者varray集合时,如果引用下标超过last。

Subscript_outside_limit(ora-06532):使用嵌套表或varray集合时,如果引用下标小于first。

Value_error(ora-06502):在执行赋值操作时,如果变量长度不足以容纳实际数据。

Login_denied(ora-01017):连接数据库时提供了不正确的用户名或口令。

Not_logged_on(ora-01012):在程序没有连接到oracle数据库时执行plsql代码则会触发。

Program_error(ora-06501):plsql内部问题。

Rowtype_mismatch(ora-06504):执行赋值操作时,如果宿主游标变量和PLSQL游标变量返回类型不兼容时。

Self_is_null(ora-30625):使用对象类型时,如果在null实例上调用成员方法。

Storage_error(ora-06500):超出内存空间或者内存被损坏。

Sys_invalid_rowid(ora-01410):无效字符串企图转换为rowid类型时。

Timeout_on_resource(ora-00051):等待资源时出现超时错误。

处理非预定义例外:

上面描述的21中预定义之外的其他oracle错误通称为非预定义例外,对这种例外的处理包括三步:首先的定义部分定义例外;然后使用progma exception(exception_name,exception_number) 在例外和oracle错误之间建立关联,这时要求用户知道可能出现的错误号(例外函数sqlcode、sqlerrm和raise_application_error);最终在例外处理部分捕捉并处理例外。

DeclareE_integrity exceptionPragma exception_init(e_integrity,-2291);BeginSqlstatement;ExceptionWhen e_integrity thenDbms_output.put_line(‘数据完整性错误。’);End;

处理自定义例外:

预定义例外和非预定义例外都跟oracle错误有关,而自定义例外则是用户根据业务处理时特定的情况而自定义的例外。使用自定义例外时,首先需要在定义部分declare定义例外,然后在执行部分触发例外(使用raise语句),最后在例外处理部分捕捉并处理例外。

declaremyexception exception;beginif1=0 thenraise myexception;endif;exceptionwhen myexception thendbms_output.put_line('asdf');end;

使用例外函数:

oracle内置函数sqlcode和sqlerrm主要用在others处理器中,分别用来返回oracle的错误代码和错误消息。一般情况下sqlcode返回负数标识的oracle错误代码,除非错误为‘ora-01403:no data found’此时对应的sqlcode为+100,对于用户自定义的异常,sqlcode返回+1,如果没有异常被触发,sqlcode返回0。

BeginExceptionWhen others thenDbms_output.put_line(sqlcode||sqlerrm(sqlcode));End;

Oracle过程raise_application_error用于在plsql应用程序中自定义错误消息。注意该过程只能在数据库端的子程序(过程、函数、包、触发器)中使用,而不能在匿名块和客户端的子程序中使用。语法为raise_application_error(error_number,message[,[true|false]]);其中error_number用于定义错误号,该错误号必须在-20000到-20999之间的负整数;message用于指定错误消息,并且该消息的长度不能超过2048字节;第三个参数如果为true,则该错误会被放在先前错误堆栈中,如果为false(默认值)则会替代先前所有错误。

plsql编译警告:

plsql警告可以分为三类,severe用于检查可能出现的不可预料或者错误结果,例如参数的别名问题;performance用于检查可能引起的性能问题,例如执行insert操作时为number列提供了varchar2类型数据;informational用于检查子程序中的死代码;all用于检查所有警告。为了数据库可以在编译plsql子程序时发出警告信息,需要设置初始化参数plsql_warnings。这个参数不仅可以在系统级或者会话级设置,也可以在alter procedure命令中设置。Alter {system|session|procedure} set plsql_warnings=’{enable|disable:{all |performance|severe|informational}}’;为了检查是否存在对应警告信息,必须先激活警告检查,然后重新编译子程序,最后使用show errors命令显示警告错误。

create or replace procedure my_testisbeginif1=0thendbms_output.put_line('test');endif;end;SQL> alter procedure my_test compile plsql_warnings = 'enable:all';Procedure alteredSQL> show errors;Errors for PROCEDURE SYS.MY_TEST:LINE/COL ERROR-------- -------------------------10/5     PLW-06002: 无法执行的代码————————————————

相关文章:

oracle的异常处理

oracle提供了预定义例外、非预定义例外和自定义例外三种类型。其中: l预定义例外用于处理常见的oracle错误; l非预定义例外用于处理预定义所不能处理的oracle错误; l自定义例外处理与oracle错误无关的其他情况。 Oracle代码编写过程中&am…...

【MySQL】MySQL数据类型

文章目录 一、数据类型的分类二、tinyint类型2.1 创建有符号数值2.2 创建无符号数值 三、bit类型三、浮点类型3.1 float3.2 decimal类型 四、字符串类型4.1 char类型4.2 varchar类型 五、日期和时间类型六、枚举和集合类型6.1 enum的枚举值和set的位图结构6.2 查询集合find_in_…...

【数据结构与算法】十大经典排序算法-希尔排序

🌟个人博客:www.hellocode.top 🏰Java知识导航:Java-Navigate 🔥CSDN:HelloCode. 🌞知乎:HelloCode 🌴掘金:HelloCode ⚡如有问题,欢迎指正&#…...

docker 常用命令

1. 搜索并下载镜像 docker search bundlefusion # 搜索docker pull jhljx/bundlefusion # 将远程仓库文件下载到本地2. 用镜像创建容器 docker run -it --namebundlefusion colec777/bundlefusion-cu11.4-cudagl:v8 /bin/bash # 创建并运行 exit # 退出终端 sudo docker cont…...

uniapp微信小程序中打开腾讯地图获取用户位置信息

实现的效果 第一步:首先登录微信公众平台 , 需要用到AppID 第二步: 注册登录腾讯位置服务 注册需要手机号和邮箱确认,然后创建应用 创建后点击添加key 添加后会生成key,后面会用到这个key 第三步: 登录微信公众平台&a…...

嵌入式领域:人才供需失衡,发展潜力巨大

嵌入式技术正快速发展,ARM处理器、嵌入式操作系统、LINUX等技术助力嵌入式领域崛起。然而,行业新颖且门槛高,缺乏专业指导。因此,嵌入式人才稀缺,身价水涨船高。 未来几年,嵌入式系统将在信息化、智能化、…...

python 书籍

python高手进阶之路 10册 QQ:417398600...

Debian纯净系统安装php常用扩展和程序

适用于 php-fpm debian容器 mysql扩展 docker-php-ext-install pdo_mysql docker-php-ext-install mysqliredis扩展 pecl install redis docker-php-ext-enable redis# pecl无法装就: docker-php-source extract # 创建并初始化 /usr/src/php目录(扩展…...

vue+element中如何设置单个el-date-picker开始时间和结束时间关联

功能&#xff1a;选了开始时间&#xff0c;则结束时间只能选择开始时间之后的&#xff1b;选了结束时间&#xff0c;则开始时间只能选择结束时间之前的 重点是picker-options属性 图示&#xff1a; 代码展示: // body 内部<el-form-item><el-date-pickerv-model&qu…...

二次封装ajax和axios

ajax app.config.globalProperties.$http function(url, method, data, async, fun) {$.ajax({url: baseUrl url, //请求地址type: method, //请求方式dataType: json, //数据类型contentType: "application/json",xhrFields: { //跨域设置withCredentials: t…...

Android进阶之SeekBar动态显示进度

SeekBar 在开发中并不陌生,默认的SeekBar是不显示进度的,当然用吐司或者文案在旁边实时显示也是可以的,那能不能移动的时候才显示&#xff0c;默认不显示呢,当然网上花哨的三方工具类太多了&#xff0c;但是我只是单纯的想在SeekBar的基础上去添加一个可以跟随移动显示的气泡而…...

企业计算机服务器中了locked勒索病毒怎么办,如何预防勒索病毒攻击

计算机服务器是企业的关键信息基础设备&#xff0c;随着计算机技术的不断发展&#xff0c;企业的计算机服务器也成为了众多勒索者的攻击目标&#xff0c;勒索病毒成为当下计算机服务器的主要攻击目标。近期&#xff0c;我们收到很多企业的求助&#xff0c;企业的服务器被locked…...

大麦订单截图 一键生成订单截图

新版付款图样式展示 这个样式图就是在大麦刚付款完的一个订单截图&#xff0c;它的状态是等待卖家发货 下滑下载源码 下载源码&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3...

LLaMA长度外推高性价比trick:线性插值法及相关改进源码阅读及相关记录

前言 最近&#xff0c;开源了可商用的llama2&#xff0c;支持长度相比llama1的1024&#xff0c;拓展到了4096长度&#xff0c;然而&#xff0c;相比GPT-4、Claude-2等支持的长度&#xff0c;llama的长度外推显得尤为重要&#xff0c;本文记录了三种网络开源的RoPE改进方式及相…...

中国信息安全测评中心CISP家族认证一览

随着国家对网络安全的重视&#xff0c;中国信息安全测评中心根据国家政策、未来趋势、重点内容陆续增添了很多CISP细分认证。 今日份详细介绍&#xff0c;部分CISP及其子品牌相关认证内容&#xff0c;一定要收藏哟&#xff01; 校园版CISP NISP国家信息安全水平考试&#xff…...

牛客网【面试必刷TOP101】~ 06 递归/回溯

牛客网【面试必刷TOP101】~ 06 递归/回溯 文章目录 牛客网【面试必刷TOP101】~ 06 递归/回溯[toc]BM55 没有重复项数字的全排列(★★)BM56 有重复项数字的全排列(★★)BM57 岛屿数量(★★)BM58 字符串的排列(★★)BM59 N皇后问题(★★★)BM60 括号生成(★★)BM61 矩阵最长递增路…...

ArcGIS Pro基础:【划分】工具实现等比例、等面积、等宽度划分图形操作

本次介绍【划分】工具的使用&#xff0c;如下所示&#xff0c;为该工具所处位置。使用该工具可以实现对某个图斑的等比例面积划分、相等面积划分和相等宽度划分。 【等比例面积】&#xff1a;其操作如下所示&#xff0c;其中&#xff1a; 1表示先选中待处理的图斑&#xff0c;2…...

括号匹配问题:栈的巧妙应用与代码优化【栈、优化、哈希表】

当解决算法问题时&#xff0c;灵活使用数据结构是至关重要的。在这个问题中&#xff0c;我们需要判断一个只包含括号的字符串是否有效&#xff0c;即括号是否能够正确匹配和闭合。使用栈这一数据结构可以很好地解决这个问题。 题目链接&#xff1a;有效的括号 解题思路&#xf…...

vue项目正确使用样式deep穿透

经常开发前端的程序员应该都知道前端一般都是组件化开发&#xff0c;为了避免样式污染通常会使用scoped添加属性选择器&#xff0c;此时如果我们想在父组件中修改子组件的样式便成了难题。其实&#xff0c;我们可以通过以下几种方式修改子组件样式&#xff0c; 组件样式穿透 …...

Jenkins持续集成-快速上手

Jenkins持续集成-快速上手 注&#xff1a;Jenkins一般不单独使用&#xff0c;而是需要依赖代码仓库&#xff0c;构建工具等。 搭配组合&#xff1a;GitGitee&#xff08;GitHub、GitLab&#xff09;MavenJenkins 前置准备 常见安装方式&#xff1a; war包Docker容器实例&…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...