PLSQL处理自定义异常

谢尔盖·波德利帕耶夫(Sergei Podlipaev)

我正在写我的pl sql包。我有一个像

FUNCTION my_func(argument IN NUMBER)
        RETURN NUMBER
BEGIN
   return some_package.somefunction(argument);
END;

我想处理异常,如果

  1. some_package不存在。
  2. somefunction不存在。

这些例外是什么?它们是预定义的还是应该定义它们来处理?我不知道他们是在名单这里预定义的。

我该如何处理每个异常?

托尼·安德鲁斯

为了回答您的一般问题,大多数Oracle错误没有与之关联的预定义命名异常,只有您发现的几十个异常。

但是,您可以创建自己的命名异常并按如下方式关联它们:

declare
    table_or_view_does_not_exist exception;
    pragma exception_init (table_or_view_does_not_exist, -942);
    l_table_name varchar2(30) := 'XXX';
    l_count integer;
begin
    execute immediate 'select count(*) from ' || l_table_name into l_count;
exception
    when table_or_view_does_not_exist then
        raise_application_error (-20001, 'No such table exists');
end;
/

declare
*
ERROR at line 1:
ORA-20001: No such table exists
ORA-06512: at line 10

如何实际处理异常取决于您。

您可以在包规范中声明此类异常,然后在其他代码中使用它们:

when my_package.my_exception then...

或者,您可以在“其他人”中捕获它们,然后使用sqlcode它们来识别它们:

declare
    l_table_name varchar2(30) := 'XXX';
    l_count integer;
begin
    execute immediate 'select count(*) from ' || l_table_name into l_count;
exception
    when others then
        case sqlcode
            when -942 then
                raise_application_error (-20001, 'No such table exists');
            else
                raise;
        end case;
end;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自定义异常处理

来自分类Dev

Rest Template自定义异常处理

来自分类Dev

处理任务异常-自定义TaskScheduler

来自分类Dev

Rest Template自定义异常处理

来自分类Dev

在Java中定义自定义异常处理程序?

来自分类Dev

设计器中的自定义控件未处理异常

来自分类Dev

@ExceptionHandler注释方法不处理自定义异常

来自分类Dev

在Flask中处理自定义异常时出错(Python)

来自分类Dev

在JAX-WS中处理异常自定义

来自分类Dev

无效的UUID的自定义异常处理程序

来自分类Dev

自定义异常的处理程序在哪里

来自分类Dev

@ExceptionHandler注释方法不处理自定义异常

来自分类Dev

自定义异常处理程序C#

来自分类Dev

Laravel - 在自定义处理程序中捕获异常

来自分类Dev

处理自定义代码中的 NoneType 异常

来自分类Dev

在Flask中为未处理的异常创建自定义异常处理程序

来自分类Dev

在Flask中为未处理的异常创建自定义异常处理程序

来自分类Dev

自定义UITableViewCell异常

来自分类Dev

自定义异常-Java

来自分类Dev

自定义光标异常?

来自分类Dev

自定义Zuul异常

来自分类Dev

自定义异常的问题

来自分类Dev

如何编写自定义C#属性以处理处理程序中的异常

来自分类Dev

如何从异步处理程序的信号处理程序中捕获自定义异常?

来自分类Dev

打印自定义错误消息时异常处理中的“未定义”

来自分类Dev

如何通过在Spring MVC中返回自定义的错误页面来全局处理404异常?

来自分类Dev

如何调试具有自定义异常处理程序的Flask应用程序?

来自分类Dev

Django-异常处理最佳实践并发送自定义错误消息

来自分类Dev

执行自定义错误句柄后执行默认异常处理程序

Related 相关文章

热门标签

归档