Oracle自定义异常的使用

《Oracle PL/SQL编程指南》07-04:自定义异常 -- 阅读详情
最近在进行项目开发时,根据业务逻辑在处理数据时,需要返回Message并阻止程序继续运行。但是,在存储过程使用Oracle的Raise根本无法满足要求。
     于是用到了RAISE_APPLICATION_ERROR
     RAISE_APPLICATION_ERROR ( error_number_in IN NUMBER, error_msg_in IN VARCHAR2); 

      error_number: 自定义的错误编号。
      error_msg
:自定义的错误内容。
     在使用过程中,遇到了下面的问题。
ORA-21000: error number argument to raise_application_error of [xxxx] is out of range
出现这个错误的原因是:在存储过程中定义的错误代码Number不在Oracle所允许的范围之内。
      Oracle允许自定义的错误代码的范围为-20000 -- -20999

      这样,就在Java端可以通过SQLException来捕获异常。
      虽然通过SQLException.getMessage()可以捕获到异常的内容,但是这些内容对于开发比较有用。对于客户来说,并不友好,也没有多大意义。
     通过SQLException.getErrorCode()可以捕获到自定义的异常错误编号。然后就可以,通过这个错误编号,自定义相应的Message内容,返回给客户了。
 
还有1个办法,就是存储过程返回值。可以直接把错误Message定义在返回值中间。这样Java端解析后,直接就可以取得Message代码了。
If  condition then
   p_result := 'ERR:MSG2061';
end if;
if  substr(p_result, 1, 3)  = 'ERR' then
    ROLLBACK;
else
    p_result = 'OK';
end if;
 
Java:略去中间的调用存储过程的步骤
if(result != null && result.startsWith("ERR:"))
 // 从result中解析出Message_id,显示Message到前台
Oracle存储过程中自定义异常 ORACLE 用户自定义异常小例子   1.进入pl/sql测试窗口   2.执行语句   declare   empname varchar2(255);   customize_exp EXCEPTION; –自定义异常   begin   FOR c IN (select d.* from scott.dept d) LOOP   begin   dbms_output.put_line('dept: ' || c.deptno || '=' || c.dname);   –当部门ID为40时抛出异常   if (c.deptno = 40) then   立即下载

相关推荐

Android车载桌面开发实战:从CarLauncher源码解析到自定义Launcher开发(Android 11)

本文深入解析了Android 11中CarLauncher的源码架构与核心模块,并提供了从零开始定制开发车载Launcher的完整实战指南。内容涵盖车载桌面的独特定位、驾驶场景优化、多屏协同、动态内容嵌入等核心挑战,以及如何构建符合安全规范、体验流畅的自定义车载桌面应用,是车载应用开发者提升系统级定制能力的实用参考。

weixin_29266647的博客 516

ora-20999,表空间满了处理办法:

ora-20999,表空间满了处理办法

汤圆的博客 4167

NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver. 最全解决方案!详细!

真的折磨了我整整一天,从网上的资料到GPT都翻遍了,终于是解决了!以下方案希望能帮助到你们。

weixin_44124632的博客 1万+

Oracle APEX 报错List of Values not supported for this type

问题现象修改Type类型为:Tabular Form[Legacy]的SQL时,保存报错: ORA-20999: ‘PL/SQL Function Body returning SQL Query’ List of Values not supported for this type! ORA-06512: 在 “APEX_050100.WWV_FLOW_REG_RPT_COL_DEV_IOT”

苏南生的优快云博客 6490

WiFi信道状态信息 基于Intel 5300的CSI Tool 安装及使用(一)

经过半个月的坎坷安装过程,连Windows系统都没装过的本人终于颤颤巍巍把CSI TOOL装好了,下面记录一下适于我所使用设备的安装过程。设备:一台THINKPAD X201,一台师兄借的华硕主板的台式机首先,如果你和我一样对linux其实一窍不通的话,建议先反复看教程里的安装代码,照猫画虎很难一步实现的,中途一定会有这或那的问题需要解决,所以该了解的基础linux指令还是要了解,起码安装过程中的那些指令可以去查一查。.........

Silver_777的博客 2万+

CST高阶技巧:用周期性边界快速仿真共面波导色散特性(含JDM求解器优化)

本文详细介绍了在CST仿真软件中,利用周期性边界条件结合JDM本征模求解器,高效分析共面波导色散特性的高阶技巧。该方法通过仿真一个单元胞而非整条传输线,大幅提升计算效率,并提供了从建模、边界设置、求解器优化到后处理的完整工作流程,是高频电路设计的实用指南。

weixin_29280219的博客 403

Oracle异常处理

                                                             异常处理的种类    PL/SQL有三种方式抛出异常:(1)    对于Oracle系统预定义异常,在PL/SQL运行时抛出。(2)    对于自定义异常,用户使用RAISE语句抛出。(3)    Oracle还为异常定义了错误代码和错误信息,因此用户还可以

好好學習、天天向上 1638

高通AI Engine SDK(QNN)使用教程(环境配置、模型转换、量化、推理、分析)

高通AI Engine使用教程

weixin_51031772的博客 1万+

oracle学习篇(四)

oracle学习篇(四)

SSS4362的博客 938

Windows下用MSYS2一键搞定Verilator安装(附国内镜像加速)

本文详细介绍了在Windows系统下,如何利用MSYS2工具和国内镜像源,快速、高效地完成Verilator的安装与配置。通过替换清华镜像源加速下载,并配合Pacman包管理器,实现近乎一键式的安装流程,有效解决了传统方法步骤繁琐、网络依赖下载慢的问题,为数字电路仿真提供了便捷的Windows环境解决方案。

weixin_29208327的博客 596

基于SpringBoot+SpringCloud+Vue前后端分离项目实战 --开篇

如何高效学习Java? 毕业设计项目应该怎么做?入门实战项目应该怎么做? 做Java开发都应该学习哪些框架技术? 我想来跟你聊聊为什么要学习此专栏?我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,当你迷茫想努力没有方向时,最事半功倍的方法是:找人带你! 因为过来人,更懂得如何学、如何做、如何少走弯路! 那今天就给大家带来一门专栏课程,由 天罡gg 和 经海路大白狗 两位实力大牛合力打造的一款专栏,可以让你从0到1快速拥有企业级规范的项目实战经验!

天罡gg的专栏 2万+

Oracle异常处理语法与实例

sqlcode总结 - 内部异常、预定义异常(=内部异常号绑定名字),sqlcode通常为负数,只有"no data found"是100。 - 用户定义异常 - 直接定义使用的sqlcode永远为1。 - 用RAISE_APPLICATION_ERROR的范围:`-20000到-20999`。

InternalsOf 1595

突破Cloudflare 5秒盾:Python爬虫+GPT分析JS混淆,零基础也能爬

传统突破Cloudflare 5秒盾的门槛极高,需要精通JS逆向、浏览器指纹伪造、行为模拟,而本文的“Playwright+GPT”方案,彻底降低了门槛——无需懂逆向、无需手动改指纹、无需写复杂JS代码,只需3步就能突破大部分网站的防护。低门槛:新手1小时内就能上手,无需逆向工程知识;高成功率:覆盖80%+的普通防护网站,15%的中等防护网站;易扩展:适配不同类型网站,可结合代理、打码平台升级为高可用系统。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1164

oracle自定义函数异常处理,详解Oracle自定义异常示例

1.弹出错误框:示例代码:sql;">declarev_count number;beginselect count(*) into v_count from dept;if v_count < 10 thenraise_application_error(-20001,'数量小于10');end if;end;执行结果:2.控制台显示:示例代码:sql;">declarev_c...

weixin_39588542的博客 533

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Oracle中的异常处理与自定义异常

Oracle中的异常处理与自定义异常

雷神乐乐的博客 1068

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

自定义oracle异常,详解Oracle自定义异常示例

1.弹出错误框:示例代码:declarev_count number;beginselect count(*) into v_count from dept;if v_count < 10 thenraise_application_error(-20001,'数量小于10');end if;end;执行结果:2.控制台显示:示例代码:declarev_count number;my_exp...

weixin_33756596的博客 419

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

自定义异常 oracle,Oracle数据库自定义异常的使用方法

Oracle数据库自定义异常的使用方法来源:不详作者:佚名时间:2009-9-6 17:14:04 Tags: Orac 使用方法需求:业务逻辑在处理数据时,需要返回Message并阻止程序的继续运行。但是,在存储过程使用Oracle数据库的Raise根本无法满足现在的要求。解决方法:使用RAISE_APPLICATION_ERRORRAISE_APPLICATION_ERROR ( er...

weixin_39923599的博客 645

oracle自定义异常标量,详解Oracle自定义异常示例

1.弹出错误框:示例代码:declarev_count number;beginselect count(*) into v_count from dept;if v_count < 10 thenraise_application_error(-20001,'数量小于10');end if;end;执行结果:2.控制台显示:示例代码:declarev_count number;my_exp...

weixin_34638021的博客 159

Oracle 自定义异常

/*自定义异常:如果你想在某个特定时间发生时间向应用程序的用户发出一些警告信息。 而事件本身不会抛出Oracle内部异常,这个异常是属于应用程序的特定异常,那么就需要自定义异常 用户定义的异常错误是通过显式使用raise语句来触发,当引发一个异常错误时,控制就转向到exception块 异常错误部分,执行错误处理代码 步骤: 1.在声明部分定义异常 &lt;异常情况&gt; excepti...

Dark丶照萤映雪 1058

一文看懂基本的oracle预定义异常和自定义异常以及oracle异常函数

oracle预定义异常 语法格式如下: EXCEPTION WHEN exception1 [OR exception2 ...] THEN statement1; statement2; ... [WHEN exception3 [...

Leagues的博客 519

自定义oracle 抛出异常

数据库异常抛出 Caused by: java.sql.SQLException: ORA-02291: 违反完整约束条件 (xxx.FK_yyyy) - 未找到父项关键字   如何自定义oracle 抛出的异常?   使用RAISE_APPLICATION_ERROR 函数 该函数是将应用程序专有的错误从服务器端转达到客户端应用程序(其他机器上的SQLPLUS或者前台开发语言)  ...

一个胖子的专栏 830

Oracle异常之自定义异常

自定义异常: 如果想在某个特定事件发生时向应用程序的用于发出一些警告信息.而事件本身不会抛出Oracle内部异常,这个异常属于应用程序的特定异常.那么就需要自定义异常. 用于定义的异常错误是通过使用raise语句来触发.当引发一个异常错误时,控制就转向到exception块异常错误部分,执行错误处理代码. 自定义异常处理步骤: 1.在pl/sql块的声明部分定义异常情况: <...

每天学习一点点 2046

oracle中自定义异常编号,Oracle自定义异常的使用

最近在进行项目开发时,根据业务逻辑在处理数据时,需要返回Message并阻止程序继续运行。但是,在存储过程使用Oracle的Raise根本无法满足要求。于是用到了RAISE_APPLICATION_ERRORRAISE_APPLICATION_ERROR ( error_number_in IN NUMBER, error_msg_in IN VARCHAR2);error_number: 自定义...

weixin_33171271的博客 865

【Oracle】PL/SQL 非预定义异常、自定义异常处理、RAISE_APPLICATION_ERROR

抛出异常 Oracle有三种类型的异常错误: 1. 预定义(Predefined)异常 ORACLE预定义的异常情况大约有24个。对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发。 2. 非预定义(Predefined)异常 即其他标准的ORACLE错误。对这种异常情况的处理,需要用户在程序中定义,然后由ORACLE自动将其引发。 3. 用户定义(User_def

Alpha's 学习笔记 1万+

oracle自定义异常标量,Oracle自定义异常的使用

最近在进行项目开发时,根据业务逻辑在处理数据时,需要返回Message并阻止程序继续运行。但是,在存储过程使用Oracle的Raise根本无法满足要求。于是用到了RAISE_APPLICATION_ERRORRAISE_APPLICATION_ERROR ( error_number_in IN NUMBER, error_msg_in IN VARCHAR2);error_number: 自定义...

weixin_28940939的博客 221
上一篇: 好难的spring错误
下一篇: Oracle中Number decimal(numeric )、float 和 real 数据类型的区别
路克虎
博客等级 码龄18年 7粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值