使用自定义函数处理所有 Oracle ORA 错误



我们正在使用中间件技术来构建Web应用程序。在安全审核期间,提出了一个问题,即应用程序在出现预言机错误(如约束验证错误或唯一键约束错误)时公开 Oracle 生成的 ORA 代码。

我们不能更改中间件代码以在代码级别隐藏错误,因此想知道我们是否可以在 Oracle 中编写一个通用的处理程序函数,它可以充当拦截器,我可以尝试从错误中删除 ORA 代码并引发另一个错误。

在PL/SQL中,您可以捕获异常并引发其他异常(这适用于所有PL/SQL代码,存储过程,函数,包,触发器等)

BEGIN
  INSERT INTO foobar(foo, bar) VALUES ('FOO', 'BAR');
EXECPTION
  WHEN OTHERS THEN
    raise_application_error(-20000, 'Could not handle your request.');
END;

但这显然需要围绕可能导致异常的语句进行PL/SQL代码。AFAIK 无法全局拦截来自单个 SQL 语句的所有异常。

最新更新