我知道
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
将返回发生错误的行号。
有没有办法获得在Oracle 11g中出错的实际代码语句?
答案 0 :(得分:4)
没有类似的机制来自动获取源代码。
原则上,您可以从user_source
或all_source
数据字典视图中获取该行的源代码(可能还有周围的行)。
但是,您所描述的情况是,您无权访问引发初始异常的数据库上的源。当前捕获并格式化异常的调用PL / SQL块只能在数据库链接用户被授予查看该数据库中的代码的权限时才能看到远程源,并且您暗示它不会。您可以通过查询堆栈跟踪中的所有者和包/过程all_source@db_link
进行验证。如果你还没有尝试过它,总是试着要求它 - 当然,来源可能不会故意公开。
如果您确实拥有该访问权限,则可以通过该链接手动查看源代码。您还可以在本地异常处理程序中查询它,并且 - 作为调试工具 - 输出,例如dbms_output
。那与查看本地代码没有什么不同,您只需在查询中使用DB链接。但是将远程代码暴露给任何调用本地程序的人可能都不明智。