[Oracle] - 使用 DBMS_UTILITY 查看异常详情

DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
说明:这是在Oracle 10g数据库引入的,DBMS_UTILITY.FORMAT_ERROR_BACKTRACE内置函数返回一个格式化的字符串堆栈,堆栈中的程序及其行号可以回溯到错误被最先抛出的那一行
范例:ORA-06512: at "DB.TEST", line 22

DBMS_UTILITY.FORMAT_ERROR_STACK
说明:这是在Oracle7中引入的,DBMS_UTILITY.FORMAT_ERROR_STACK 这个内置函数和SQLERRM一样,返回的是和当前错误(SQLCODE返回的值)所关联的错误信息。
范例:ORA-01476: divisor is equal to zero

DBMS_UTILITY.FORMAT_CALL_STACK
说明:这是在Oracle7中引入的,DBMS_UTILITY.FORMAT_CALL_STACK这个内置函数返回一个格式化的字符串,它显示了执行调用堆栈:直至此函数的调用点处的所有过程或者函数的调用顺序。换句话说,这个函数回答了这个问题:“我是怎么来到这里的?”
范例:

----- PL/SQL Call Stack -----
object line object
handle number name
00007FFA6A87CB30 31 function LTR.TEST_PAYMENT_LOGGING
00007FFA6A7C8268 3 anonymous block

 

SP 应用范例

复制代码
create or replace procedure spTest(pId number, res out number) is
begin
  /* SQL query */
  commit;
  res := 1;
exception
  when others then
    DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
    DBMS_OUTPUT.PUT_LINE('FORMAT_ERROR_BACKTRACE:' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
    DBMS_OUTPUT.PUT_LINE('FORMAT_ERROR_STACK:' || DBMS_UTILITY.FORMAT_ERROR_STACK);
    DBMS_OUTPUT.PUT_LINE('FORMAT_CALL_STACK:' || DBMS_UTILITY.FORMAT_CALL_STACK);
    rollback;
    res := 0;
end;
复制代码

SP 异常详情

复制代码
-1---ORA-00001: brott mot unik begransning (XXX.PK_YYY)
FORMAT_ERROR_BACKTRACE:ORA-06512: vid "XXX.TB", rad 23

FORMAT_ERROR_STACK:ORA-00001: brott mot unik begransning (XXX.PK_YYY)

FORMAT_CALL_STACK:----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
00007FFCBF6193E8        57  procedure XXX.TB
00007FFCCC9ECC98         3  anonymous block
复制代码

 

转载来源

http://www.cnblogs.com/pompeii2008/p/7382640.html

posted @   jinzesudawei  阅读(2887)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示