Oracle修炼路程--PL/SQL之例外

某东x-api-eid-token风控参数分析与破解 x-api-eid-token是京东的风控参数,在接口当中,如果没有该参数,有一定的概率能请求成功,但是在请求一段时间后,会报403权限失败的,该参数主要通过jsTk.do这个接口生成,并且会将其存储到cookie当中。 阅读详情

概念:
一种PL/SQL标识符,它用于处理PL/SQL程序的运行错误。

类型
一 系统例外:

1 预定义例外:用于处理常见的Oracle错误
2 非预定义例外:用于处理预定义例外所不能处理的Oracle错误
no_data_found: 没有找到数据,报错;
too_many_rows:行数太多,报错;
zero_divide:被0整除,报错;
values_errors: 算术或者转换错误;
timeout_on_resource: 等待资源超时;

set serveroutput on;
declare
pnum number;
begin
pnum :=1/0;

exception
 when zero_divide then dbms_output.put_line('0不能作为除数');
 when too_many_rows then dbms_output.put_line('行数太多');
 when others then dbms_output.put_line('其他异常');
end;

系统例外语法:
EXCEPTION
WHEN exception1 [OR exception2…] THEN
statement1;
statement2;
…
WHEN exception3 [ OR exception4…] THEN
statement1;
statement2;
…
WHEN OTHERS THEN
statement1;
statement2;
…

二 自定义例外:处理与Oracle错误无关的其他情况。

set serveroutput on;
declare
 myexc EXCEPTION;
  pnum number :=1;
begin
if pnum = 1 then raise myexc;--抛例外
end if;
exception
when myexc then dbms_output.put_line('自定义例外');
end;

例题1 是否存在编号是50的部门,如果不存在,抛出一个例外;若存在则打印;

set serveroutput on;
declare
cursor cemp(dno number) is select ename from emp where deptno = dno;
pename emp.ename%type;
no_emp_found exception;
begin
open cemp(50);
FETCH cemp INTO pename;
if cemp%notfound then raise no_emp_found;
else
loop
exit when cemp%notfound;
FETCH cemp INTO pename;
dbms_output.put_line(pename);
end loop;
end if;
exception when no_emp_found then dbms_output.put_line('没有这个部门!');
close cemp;
end;

例题2 统计每年的入职人数;

--select count(*),to_char(hiredate,'yyyy') from emp group by to_char(hiredate,'yyyy');
set serveroutput on;
declare
cursor cemp is  select to_char(hiredate,'yyyy') from emp;
pdate varchar2(4);
psum_80 number:=0;
psum_81 number:=0;
psum_87 number:=0;
psum_82 number:=0;
begin
open cemp;
loop
fetch cemp into pdate;
exit when cemp%notfound;
if pdate='1980' then psum_80 :=psum_80+1;
elsif pdate='1981' then psum_81 :=psum_81+1;
elsif pdate='1982' then psum_82 :=psum_82+1;
else psum_87 :=psum_87+1;
end if;
end loop;
close cemp;
DBMS_OUTPUT.PUT_LINE(psum_80);
DBMS_OUTPUT.PUT_LINE(psum_81);
DBMS_OUTPUT.PUT_LINE(psum_82);
DBMS_OUTPUT.PUT_LINE(psum_87);
end;

例题3 涨工资,每人涨10%;按入职时间顺序涨工资,且涨后的总工资不能超过5万,查询出涨工资的人个数以及涨后的工资总额;


set SERVEROUTPUT ON;
declare
cursor cemp is select empno,sal from emp order by hiredate asc;
pempno emp.empno%type;
psal emp.sal%type;
countEmp number :=0;
salTotal number :=0;

begin
open cemp;
loop
fetch cemp into pempno,psal;
exit when cemp%notfound;
if salTotal +psal*1.1<50000
   then update emp set sal=sal*1.1 where empno=pempno;
   countEmp:=countEmp+1;
   salTotal :=salTotal +psal*1.1;
   
else 
     dbms_output.put_line('人数'||countEmp||'总额'||salTotal);
    exit;
end if;
end loop;
close cemp;
end;

例题 4 :
统计各部门的工资情况,格式如下:
部门编号 <2000的人数 2000-4000人数 >4000人数 工资总额

set SERVEROUTPUT ON;
declare
cursor cdept is select deptno from dept;
pdept dept.deptno%type;

cursor cemp(dno number) is select sal from emp where deptno=dno;
psal emp.sal%type;

count1 number :=0;
count2 number :=0;
count3 number :=0;
--各部门的工资总额;
totalCount number :=0;

begin
open cdept;
loop--外层循环,遍历所有的部门编号;内层循环,遍历工资;
fetch cdept into pdept;
exit when cdept%notfound;

open cemp(pdept);
loop
fetch cemp into psal;
exit when cemp%notfound;
select sum(sal) into totalCount from emp where deptno=pdept;
if psal<2000 then count1:=count1+1;
elsif psal>=2000 and psal<4000  then count2:=count2+1;
else count3:=count3+1;
end if;
end loop;
close cemp;
dbms_output.put_line(pdept||' '||count1||' '||count2||' '||count3||' '||totalCount);
end loop;
close cdept;

end;
基于Pascal VOC数据集的YOLOv8目标检测系统实现:人、鸟、猫、牛、电视、车等20类目标识别与UI界面部署全流程详解 VOC 2007、VOC 2012 两个主要版本;每个图像提供 bounding box(目标框)+ 目标类别;共计 20 类,所有图像手工标注,质量高。完整复现 Pascal VOC 20类检测任务成功训练 YOLOv8 模型实现可视化 UI + 实时检测系统支持多平台部署和演示。 阅读详情

相关推荐

GD32F470实战:如何用EXMC+SDRAM为LVGL打造超大内存池(附完整配置代码)

本文详细介绍了如何利用GD32F470的EXMC接口与SDRAM深度整合,为LVGL构建高性能内存解决方案。通过硬件架构设计、EXMC接口配置、高级内存管理策略及LVGL性能优化技巧,开发者可以突破微控制器内存限制,实现高分辨率显示和复杂动画效果。附完整配置代码,助力嵌入式GUI开发。

rrr55的博客 548

Oracle数据库疑问:函数出现no_data_found不报异常

今天做一个功能的时候,发现Oracle数据库的一个令人很奇怪的点: 在sql里面调用的函数,如果函数体出现no_data_found的报错居然不会显式报错!而是终止执行,不报错,并返回null值。真是太费解了! 不信的可以自己试试。我确实是今天才发现这个“问题”。以前写函数,我一定做异常处理的。 备注:经过测试得知,别的错误,例如TOO_MANY_ROWS和DUP_VAL_ON_INDEX,

samt007的Blog 3975

国内免魔法接入Grok API,打造智能QQ机器人实战指南

大型语言模型(LLM)通过API接口为开发者提供了强大的自然语言处理能力,其核心原理是基于海量数据训练的深度神经网络,能够理解和生成类人文本。这一技术价值在于显著降低了AI应用开发门槛,使开发者无需从零训练模型即可快速集成智能对话、内容生成等功能。在即时通讯、智能客服、自动化工具等应用场景中,LLM API能有效提升交互体验与效率。本文聚焦于如何通过稳定的第三方API服务,绕开网络访问限制,将xAI推出的Grok模型接入国内网络环境,并结合NoneBot2框架与go-cqhttp,实现一个功能完整的智能QQ

weixin_30607125的博客 337

oracle预定义异常

NO_DATA_FOUND:执行查询无数据、引用一个末初使化的表、通过UTL_FILE包调用到尾的文件 TOO_MANY_ROWS:采用SELECT INTO语句,但返回的记录超过了1条 DUP_VAL_ON_INDEX:插入或者更新语句,与唯一索引相冲突 TIMEOUT_ON_RESOURCE: 等待资源超时 TRANSACTION_BACKED_OUT:...

小胡子 237

Intel SGX Explained

计算机中最主要的资源是CPU和内存,由操作系统和虚拟管理系统等系统软件来管理这些资源。

hanqdi_的博客 3457

【技术分享】ArcGIS Pro底图色彩优化实战:从DEM到山体阴影的进阶调色技巧

本文深入探讨了在ArcGIS Pro中优化地形底图色彩的进阶技巧。通过分析DEM与山体阴影的直方图,详细讲解了如何运用图层混合、亮度、对比度及伽马值等核心参数进行精细化调色,从而将灰暗平淡的地图转化为层次分明、视觉美观的专业成果。

5b6n7m8的博客 761

oracle中的null与no data found

oracle中的null与no data found

wang16729438的博客 2922

2025年度工业级3D全景相机技术解析选型参考:国产品牌的技术突围与市场格局

本文分析了工业级3D相机在智慧城市和建筑数字化中的应用。通过对比国内外主流设备的技术参数和应用场景,发现国产品牌如众趣科技在性价比和本地化服务方面具有优势,尤其适合大型空间扫描项目;而国际品牌如Faro、Leica则在精度和可靠性上保持领先。建议根据项目需求(如测距范围、精度要求、预算)进行设备选型,综合考虑扫描效率、数据处理能力和系统兼容性。国产品牌已在国内大型基建项目中展现出竞争力,国际品牌则更适合高精度逆向工程和国际化项目。

gxdtgsy的博客 1076

服务器系统防火墙例外,Windows Server 2012设置端口例外、防火墙设置方法

在服务器管理中,有时候我们需要放开某些端口,便于某种应用能够成功运行。如何设置服务器端口例外、在防火墙添加例外窗口呢?本文以 Server 2012为例,举例说明如何添加例外端口,如何打开某些端口?方法一、通过第三方端口管理软件来实现设置端口例外目前有很多软件都可以实现端口例外功能,例如有一款“大势至服务器文件备份系统”(下载地址:http://www.grabsun.com/filebackup...

weixin_26767391的博客 3512

【光子 AI 】应用 LangGraph 的核心模型和算法原理,完整实现一个极简版的 Agent 开发框架源代码,并给出具体的应用测试实际项目案例

下面给出一个“极简版 LangGraph 风格 Agent 框架”的完整可运行实现:用 有向图 + 状态(State) + 节点(Node) + 条件路由(Conditional Edge) + 循环(Loop) + Checkpoint 这一套核心模型/算法,把 Agent 组织成可编排、可测试的状态机工作流(这正是 LangGraph 的核心抽象之一:以 StateGraph 组织节点,节点读写共享状态,边做路由与循环,并支持持久化/回放)。 参考概念来源:LangGraph 官方文档对 “StateG

AI天才研究院 274

2万字大厂面经:小米嵌入式面试题及参考答案(持续更新)

BIOS (Basic Input/Output System) 是一种存储在ROM中的固件程序,它为计算机提供了最基础的硬件初始化和服务。BIOS主要存在于传统的x86架构计算机中。嵌入式系统的启动流程取决于具体的硬件平台和所采用的操作系统。复位阶段:当系统通电或复位时,CPU进入复位状态。硬件初始化:CPU和必要的硬件设备(如内存控制器)被初始化。加载引导加载程序:引导加载程序(如U-Boot)被加载到内存中。执行引导加载程序:引导加载程序开始执行,初始化更多的硬件设备,并检测存储介质。

大模型大数据攻城狮的专栏 2530

win7和xp系统下的防火墙配置例外

在大多数情况下,window操作系统软都会默认开启防火墙配置,用于保护网络安全。 在项目上,我们会开发一些软件涉及到网络通信,会因为防护墙导致数据无法接收;下面从工程角度添加防火墙例外,而且xp系统和win7系统配置方式还有所不同,win8/win10和win7一致。 手动添加防火墙例外 首先从直观角度看下win7系统下面的防火墙配置,要关闭或者添加某个程序的防火墙例外,入口如下: 控制面板-&g...

Keep Moving~ 1244

YOLOv13改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进

1️⃣ 已更新种不同的改进方案,专栏内的每篇文章皆,均可顺利运行。2️⃣ 订阅专栏即可进群获取以及从的各种答疑内容。3️⃣ 全新的YOLOv13改进专栏,,只为更好的满足论文发表的要求。专栏内容,专栏实时评分,全网最高,质量保证。🎫。。

Limiiiing的博客 9172

Oracle修炼路程--PL/SQL基础语法

常用工具: 1 plsql developer 2 oracle sql developer PL/SQL是一门为扩展Oracle中SQL功能的编程语言, 常见符号: || 字符串连接符 := 赋值运算符 % 属性索引 使用%type可以使变量获得与字段相同的数据类型 = 相等运算符 1) 变量 SET SERVEROUTPUT ON; declare phello...

Python_Newer的博客 421

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Oracle修炼路程--PL/SQL之光标的使用

概念: 光标又名游标,是一个PL/SQL结构,利用光标可以命名这些工作区,并通过光标访问工作区中的信息。 语法: cursor 光标名(参数列表) is select。。。 属性: %isopen 判断光标是否打开,所以第一步打开光标; %rowcount 判断光标已经获取数据的行数; %found ...

Python_Newer的博客 240

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Oracle修炼路程--存储过程/存储函数

一 存储过程 1 概念: 一条或多条SQL语句的集合; 当对数据库进行一系列的操作时,利用存储过程可将复杂的操作封装成一个代码块,以便重复使用。如同java中的方法,调用即可; 2 创建语法: create or replace procedure 过程名(参数列表) as PL/SQL语句; 3 具体语法: 1) 无参数的存储过程 create or replace procedur...

Python_Newer的博客 229

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

关于系统例外和自定义例外

“` **–系统例外: no_data_found,to_many_rows,Zero_Divide(被零除),Value_error(算术或转换错误),Timeout_on_resource (在等待资源时发生超时) –自定义例外 : 查询 不存在的记录** set serveroutput ondeclare –定义光标(此查询没有数据) cursor tano is

暗象的博客 318

系统例外

系统例外:no_data_found--系统例外:no_data_found declare pename emp.ename%type; begin select ename into pename from emp WHERE empno = 1234; exception when no_data_found then dbms_output.put_line('没有找到该

qq_24259223的博客 265

Oracle修炼路程--查询习题

第一题 :查询所有员工的年工资、所在部门的名称,按年薪从低往高排序; SQL> select (sal*12+nvl(comm,0)) 年工资,d.dname 部门名称 from emp e,dept d where e.deptno=d.deptno order by 年工资 asc; 年工资 部门名称 ---------- -------------- 14400 R...

Python_Newer的博客 695

Oracle修炼路程--分页查询

一 TOP-N问题 --取出工资最高的5五名员工信息; --第一步:首选对员工信息按照sal进行降序; SQL> select *from emp order by sal desc; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- -...

Python_Newer的博客 419

Oracle修炼路程--powerdesigner和oracle

1 环境 Powerdesigner 16.7(64位) Oracle 11g(64位) 2 配置数据源 安装好powerdesigner之后,做E-R图; 如图,物理模型:关系型须子表指向父表。 3 连接数据 1)配置数据源 开始-》搜索“数据源”-》接下来如下图: 到此,数据源配置完毕; 3 pb连接oracle 快捷键:ctrl+g,如图: 点击“确定”之后,即可将表格导入到数据库之中; 4 逆向生成 现在将数据库中的表格,导入到pd中: 填写好账号密码即可连接数据库,然后

Python_Newer的博客 354

Oracle修炼路程--触发器

概念: 与表相关联的PLSQL程序,当执行DML(增删改)自动执行触发器; 创建语法: create or replace trigger 触发器名 before|after—在DML之前或者之后; delete|insert|update [of 列名]–DML语句 on 表名----操作某个表 for each row----对某行数据进行操作 。。。。。plsql代码 无论修改多少行,触发器...

Python_Newer的博客 351

Oracle修炼路程--六种约束

约束: 约束是数据库用来确保数据满足业务规则的手段。具体需要根据业务需求进行相应设置。 常见约束分类: 检查约束(Check):可限制条件,如name>4 唯一约束(Unique):id:1 2 3 4 5 主键约束(Primary key):类似唯一约束 外键约束(Foreign key):两张表关联 非空约束(Not null):不能为空 默认约束(Default):默认某值 约束命名规...

Python_Newer的博客 316

Oracle修炼路程--视图

视图概念: 视图属于数据库对象(包括表、视图、序列、索引、同义词、触发器)之一, 视图是一个虚表,建立在表的基础之上,可以来自单个表或者多个表。 视图创建 创建视图的语法: create view myview as select 。。。from。。。emp with check option; --举例创建视图myview SQL> create view myview as select...

Python_Newer的博客 290

Oracle修炼路程--数据字典

概念: 数据字典是oracle数据库最重要的组成部分;它是由表和视图组成,记录了数据库的系统信息;数据字典的所有者为sys用户;用户只能在数据字典上执行查询操作,而其维护和修改是由系统自动完成的! oracle数据字典通常是在创建和安装数据库时被创建的,是oracle系统工作的基础。没有数据字典的支持,oracle数据库系统就不能进行任何工作。 分类 1 静态数据字典表 2 静态数据字典视图 3 ...

Python_Newer的博客 260

Oracle修炼路程--日期函数及转换函数

一 日期函数 a) sysdate:获取当前时间 SQL> select sysdate from dual; SYSDATE -------------- 13-4月 -20 SQL> select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; SYSDATE TO_CHAR(SYSD...

Python_Newer的博客 257
上一篇: Oracle修炼路程--PL/SQL之光标的使用
下一篇: Oracle修炼路程--存储过程/存储函数
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值