显示 DB2 存储过程中发生错误的行号

Jak*_* v1 3 db2 stored-procedures debugging exception db2-luw

我在捕获 SQLSTATE 和 SQLCODE 的过程中添加了一个 EXIT 处理程序,甚至找到了获取过程名称的方法,但我还需要知道错误发生的位置。建议非常感谢。

declare EXIT handler for SQLEXCEPTION
begin
    select sysibm.routine_specific_name, SQLSTATE, SQLCODE 
    into v_sp_name, v_sqlstate, v_sqlcode 
    from sysibm.sysdummy1;

    call dbms_output.put_line('Error in '||v_sp_name ' ['||v_sqlstate, v_sqlcode||']');
end;
Run Code Online (Sandbox Code Playgroud)

mus*_*cio 5

如果您使用的是当前受支持的 Db2 for LUW 版本(11.1 或 11.5),则可以在信号处理程序中使用DBMS_UTILITY.FORMAT_CALL_STACK()DBMS_UTILITY.FORMAT_ERROR_BACKTRACE()来记录故障排除信息。