可以调试但不能检查或监视 Oracle 中巨大的 PlSql 包中的变量

Posted

技术标签:

【中文标题】可以调试但不能检查或监视 Oracle 中巨大的 PlSql 包中的变量【英文标题】:Can debug but Can Not inspect or watch variables in a huge PlSql package in Oracle 【发布时间】:2012-09-07 09:02:00 【问题描述】:

我有一个“巨大的”Pl/Sql 包(大约 1.4 Mb,大约 30.000 行)在 Oracle 数据库 10.2.0.4.0 - 64bit over Solaris 中运行。

我可以逐步调试它(包被标记为 debuggin),但我的问题是当我尝试观察或检查任何变量时,PL/Sql 开发人员向我显示带有任何变量(varchar2、数字、等)即使我不能看这样的东西:

strTipo VARCHAR2(20)  := 'PRUEBA';

我可以调试和观察/检查其他小包中的变量,但不能在大包中。 dbms_output.put_line 快把我逼疯了。

很多节点? Oracle 无法为变量分配内存?

如果Oracle中有一些配置参数或者我该怎么办?

将大包装做得更小对我来说不是解决方案。我做不到。

提前致谢。

【问题讨论】:

不要认为问题出在 Oracle,而是 pl/sql Developer IDE。听起来很愚蠢,但请尝试重新启动运行 pl/sql developer 的本地机器。 @tbone - 我们是微软的博格!准备重新启动!! :-) 这不是重启问题,我认为这不是 pl/sql 开发人员问题,因为使用 TOAD 我有同样的问题。我认为这是一个 Oracle 限制,可能是许多节点、内存中的许多变量或类似的东西。但我不知道如何检查它以丢弃。谢谢。 我肯定会尝试通过 SQL*Plus 或 SQL Developer 手动运行调试代码——也许您错过了错误或信息性消息或其他线索。 【参考方案1】:

包裹体太大了。把它分成几个包。 plsql引擎也有一些限制见这里:http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/limits.htm(10g文档)

【讨论】:

【参考方案2】:

你可以使用;

DBMS_OUTPUT.PUT_LINE(变量);

【讨论】:

以上是关于可以调试但不能检查或监视 Oracle 中巨大的 PlSql 包中的变量的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2015 远程调试器没有调试器成员或监视表达式返回值

oracle数据库事件监视器怎么用

为啥 VS2015 调试器不能在监视窗口中正确显示函数地址?

debug套路

在 oracle 中的 case 或 decode 语句中使用 sum

监视/检查与oracle 11数据库的连接的简单批处理?