oracle – PL / SQL异常处理:do nothing(忽略异常)

栏目: 数据库 · Oracle · 发布时间: 7年前

内容简介:http://stackoverflow.com/questions/27566867/pl-sql-exception-handling-do-nothing-ignore-exception

这是一个我经常被问到的问题.由于我在stackoverflow上找不到任何确切的重复,我以为我会把它作为参考.

题:

在PL / SQL中,我知道捕获异常并执行代码,以及如何将它们传播到调用块.

例如,在以下过程中,NO_DATA_FOUND异常被直接处理,而所有其他异常都被调用到调用块:

CREATE OR REPLACE PROCEDURE MY_PROCEDURE() 
IS
BEGIN
    do_stuff();

EXCEPTION
    WHEN NO_DATA_FOUND THEN
        -- Do something
        handle_exception();

    WHEN OTHERS THEN
        -- Propagate exception
        RAISE;
END;

但是我应该使用什么命令来忽略一个或所有引发的异常并将执行控制返回到调用块?

虽然我同意99%的时间是不好的做法,默默地忽略异常,而不是至少将它们记录在某个地方,但是具体情况是完全可以接受的.

在这些情况下,NULL是你的朋友:

[...]
EXCEPTION

    WHEN OTHERS THEN
        NULL;
END;

忽略例外可能需要的两种典型情况是:

1)您的代码包含一个您知道的语句可能会偶尔失败,您不希望此事件中断您的程序流程.

在这种情况下,您应该将嵌套的语句包含在嵌套块中,如下例所示:

CREATE OR REPLACE PROCEDURE MY_PROCEDURE() 
IS
    l_empoyee_name  EMPLOYEES.EMPLOYEE_NAME%TYPE;
BEGIN
    -- Catch potential NO_DATA_FOUND exception and continue
    BEGIN 
        SELECT EMPLOYEE_NAME
        INTO l_empoyee_name
        FROM EMPLOYEES
        WHERE EMPLOYEE_ID = 12345;
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            NULL;
        WHEN OTHERS THEN
            RAISE;
    END;

    do_stuff();

EXCEPTION

    WHEN OTHERS THEN
        -- Propagate exception
        RAISE;
END;

请注意,PL / SQL通常不允许从Visual Basic知道的“错误恢复继续”类型的异常处理,其中所有异常都被忽略,并且程序继续运行,就好像没有发生任何事情一样(参见 On error resume next type of error handling in PL/SQL oracle ).您需要在嵌套块中明确地包含潜在的失败语句.

2)你的程序是不重要的,忽略它抛出的所有异常不会影响你的主程序逻辑. (但是,这种情况很少,经常会导致长期的调试噩梦)

BEGIN

    do_stuff();

EXCEPTION

    WHEN OTHERS THEN
        -- Ignore all exceptions and return control to calling block
        NULL;
END;

http://stackoverflow.com/questions/27566867/pl-sql-exception-handling-do-nothing-ignore-exception


以上所述就是小编给大家介绍的《oracle – PL / SQL异常处理:do nothing(忽略异常)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Linux从入门到精通

Linux从入门到精通

刘忆智、等 / 清华大学出版社 / 2010-1-1 / 59.00元

linux是目前增长最迅速的操作系统。本书由浅入深、循序渐进地向读者介绍linux的基本使用和系统管理。全书内容包括linux概述、linux安装、linux基本配置、桌面环境基本操作、shell基本命令、文件和目录管理、软件包管理、磁盘管理、用户与用户组管理、进程管理、网络配置、浏览网页、收发邮件、文件传输和共享、远程登录、多媒体应用、图像浏览和处理、打印机配置、办公软件的使用、linux编程工......一起来看看 《Linux从入门到精通》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

html转js在线工具
html转js在线工具

html转js在线工具