oracle pl/sql 将异常类型传递给函数

Posted

技术标签:

【中文标题】oracle pl/sql 将异常类型传递给函数【英文标题】:oracle pl/sql pass exception type to function 【发布时间】:2017-09-13 06:37:59 【问题描述】:

我正在尝试找出是否有一种方法可以在不显式实现 when 子句中的所有 predefined Exceptions 的情况下获取异常类型。

我写了一个发送邮件的函数。我在 PL/SQL 过程的 when others 子句中调用此函数,有没有办法将类型作为 varchar 传递? 将异常消息也作为参数传递会非常出色。

问候

【问题讨论】:

docs.oracle.com/cloud/latest/db112/LNPLS/errors.htm#LNPLS848 谢谢,测试它并且工作正常。请给出答案 【参考方案1】:

在 Oracle 文档中搜索:DBMS_UTILITY.FORMAT_ERROR_STACK

【讨论】:

【参考方案2】:

有几种方法,我用SQLERRM

EXCEPTION
  WHEN CANNOTPROCEED THEN


      ORA_ERROR:=SQLERRM;

      ROLLBACK;
insert into LOG_TABLE (LOG_ERROR) Values();
commit;

【讨论】:

【参考方案3】:

正如Mat 在他的comment 中建议的那样,可以简单地使用变量SQLCODESQLERRM 来检索异常。它本身并不检索异常的类型,但它确实提供了足够的信息来解决问题。 Oracle Documentation

【讨论】:

链接已失效。

以上是关于oracle pl/sql 将异常类型传递给函数的主要内容,如果未能解决你的问题,请参考以下文章

将oracle.sql.ARRAY传递给PL / SQL过程时设置时区

Oracle PL/SQL 传递行类型作为构造函数参数

每个将表名传递给过程的 ORACLE PL/SQL

将数组传递给 Oracle 函数

Oracle11G_PL/SQL

PL/SQL:, 如何将变量传递给 SELECT 语句并返回所有结果行