PL/SQL 002---PL/SQL的基本能概念--2.2语言特性--2.2.6结构化异常处理

本文介绍了Oracle PL/SQL中的异常处理机制,包括异常的产生、捕获和处理。通过一个示例,展示了如何在PL/SQL块中处理NO_DATA_FOUND异常,当查询未存在的员工时,程序会捕获该异常并输出相应信息。异常处理使得代码结构更清晰,提高了程序的健壮性。
摘要由CSDN通过智能技术生成

PL/SQL 块的组成部分包含了一个异常处理块,该快以Exception开始,通过在PL/SQL 代码中包含了异常处理快,让程序的主体与异常部分的处理相隔离,使得程序的结构更加清晰易读。

PL/SQL 通过使用异常和异常处理器来进行错误的处理,异常就是一些Oracle预定义的错误或者用户自定义的错误。在发生错误时,Oracle预定义的异常会被系统隐式抛出,对于用户自定义的异常,开发人员可以使用RAISE手动抛出。当异常被抛出后,异常处理器将捕捉到这些异常,然后执行异常处理代码。

为了更好地了解异常的执行流程,绘制了稀土所示的异常执行流程图。

上图的执行顺序如一下步骤所示:

(1)在语句执行部分执行到语句二时,产生了一个异常,程序流马上跳转到异常块处理。

(2)异常处理块如果包含了异常筛选器,筛选到匹配的异常处理代码进行执行并退出。

(3)如果没有发现匹配的异常,将进入最后的所有未处理异常的处理代码块进行执行并退出。

对于Oacle的预定义异常,以最常见的NO_DATA_FOUND 异常为例,出现该异常的最常见形式是当select-into 语句没有查询到任何行时。下面展示了查询一个未存在的员工时,如何捕获该异常,异常定义如下图代码所示。

declare
  -- 声明一个变量存储员工money
  moneyNum varchar2(207);
begin
  --查询员工into值
  select worker_money
    into moneyNum
    from worker_mag
   where worker_name = '小红';
  dbms_output.put_line('小红的工资是' || moneyNum);
Exception
  -- 异常筛选器
  when NO_DATA_FOUND THEN
    DBMS_OUTPUT.put_line('没有找到小红这个人');
    -- 其他异常
  when others then
    DBMS_OUTPUT.put_line('其他异常');
  
end;

 

以上代码使用select-into 查询emp表中的特定员工编号的员工名称。SQL语句中使用了替换变量,当输入一个不存在的员工编号时,将触发NO_DATA_FOUND 异常,此时程序执行代码立刻跳转到Exception区块,而不会执行接下来DBMS_OUTPUT语句。

在EXCEPTION部分使用了when-then语句对捕获的异常进行筛选,当找到匹配的NO_DATA_FOUND异常后,将执行其中包含的代码块,如果所有的异常都不匹配,最后的WHEN OTHERS THEN 表示所有未处理的异常都在此进行处理。

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值