Oracle PL/SQL:如何获取堆栈跟踪,包名和过程名称

前端之家收集整理的这篇文章主要介绍了Oracle PL/SQL:如何获取堆栈跟踪,包名和过程名称前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有时异常返回如下:“ORA-06502:PL / sql:numeric或value error:
字符串缓冲太小“。

它不是可读的,因为它不会报告表,列和它尝试写入的值。

在发生或捕获异常的时刻获取当前的过程名称将是有用的。

我该如何获得?

你可能想要 DBMS_UTILITY.FORMAT_ERROR_BACKTRACE功能
sql> ed
Wrote file afiedt.buf

  1  create or replace procedure p1
  2  is
  3  begin
  4    raise_application_error( -20001,'Error 1',true );
  5* end;
sql> /

Procedure created.

sql> create or replace procedure p2
  2  as
  3  begin
  4    null;
  5    p1;
  6  end;
  7  /

Procedure created.

sql> begin
  2    p2;
  3  exception
  4    when others then
  5      dbms_output.put_line( dbms_utility.format_error_backtrace );
  6  end;
  7  /
ORA-06512: at "SCOTT.P1",line 4
ORA-06512: at "SCOTT.P2",line 5
ORA-06512: at
line 2


PL/sql procedure successfully completed.
原文链接:https://www.f2er.com/oracle/205911.html

猜你在找的Oracle相关文章