gpt4 book ai didi

oracle - PL/SQL 开发人员 : debugging hangs on certain code

转载 作者:行者123 更新时间:2023-12-04 11:06:31 34 4
gpt4 key购买 nike

我注意到当使用 PL/SQL Developer 调试代码时,调试器会在跳过某些代码时挂起。第一个猜测是那行代码,但进一步的调查没有发现任何可疑之处。只是存储过程中的简单操作或调用系统函数。显然没有理由挂起。

查询系统 View 使我发现调试器 session 的当前 SQL_CODE 是:

declare ret binary_integer; begin ret := PBSDE.DEBUG_LOOP; end;

一段时间后 PL/SQL Developer 抛出一个错误:

ORA-06502: PL/SQL: numeric or value error: character to number conversion error

我在 Oracle 支持站点上找到了具有完全相同症状的相关注释(文档 ID 1074885.1)。但解决方案表明要么有趣,要么可悲。我知道 Oracle Support 上的信息是不允许共享的,但这种事情应该打破规则。我将冒昧地完整引用解决方案部分:

Do not run PL/SQL Developer in debug mode against an Oracle database.

是的,就是这样。那么我有什么选择呢?

最佳答案

看来您很幸运遇到了 Oracle 数据库内部错误(从技术上讲不是错误,如果您愿意,可以将其称为“功能”)和您使用的 SQL 开发工具的组合。 Allround Automations 论坛上有几个关于此问题的主题(即 this one ,您可以通过关键字 PBSDE.DEBUG_LOOP 搜索其他主题),但没有提出明确的解决方案。正如通常发生的那样,Oracle 将责任归咎于工具,Allround Automations 将责任归咎于数据库。

简而言之,PL/SQL Developer 使用系统包 DBMS_DEBUG 及其用于调试目的的例程。该软件包本身有点过时(在 8i 版本中引入),但许多 IDE 仍在使用它。挂起的原因在于这个包的某个地方,PL/SQL Developer 与它无关(除了根本不使用这个包)。理想情况下,Oracle 应该修复它,但这不太可能发生,因为有更现代的替代包称为 DBMS_DEBUG_JDWP,它具有相同的目的。似乎唯一支持使用此包进行调试的工具是 Oracle 自己的 SQL Developer 和 JDeveloper(这就是为什么从 Oracle 方面修复过时代码中的错误的努力很少)。

因此,替代方案是使用 SQL Developer 或 JDeveloper 进行调试,直到 PL/SQL Developer 开始使用 DBMS_DEBUG_JDWP 或 Oracle 修复 DBMS_DEBUGOracle documentation 中有关于该主题的详分割步指南。 .

关于oracle - PL/SQL 开发人员 : debugging hangs on certain code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22324939/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com