2

我正在使用 PL/SQL Developer 9.0.6,在 Oracle 11g 数据库上工作。

我在一个包中有一个过程,它创建一些动态 SQL 来运行execute immediate。变量vSQL声明为varchar2(4000). 我的程序正确构建并运行,并通过参数vSQL返回 a 。ref cursorout

但是,在调试我的程序时,发生了一些意想不到的事情:我在 上设置了一个手表vSQL,当长度vSQL达到 1000 或更大时,手表窗口中的值从'(Long Value)'的内容vSQL变为文字,我可以不再查看 的内容vSQL

为什么会这样?有什么方法可以转换,vSQL以便在调试程序时仍然可以查看它?

4

2 回答 2

2

正如其他人指出的那样,PL/SQL Developer 无法在调试器中显示 4000 个字符。这可能是 Oracle 包 DBMS_DEBUG 的限制。

作为一种解决方法,您可以使用 Oracle SQL Developer,它使用不同的调试器 DBMS_DEBUG_JDWP。一般来说,PL/SQL Developer 比 Oracle SQL Developer 好一千倍。但是如果您需要调试大字符串或集合,那么 Oracle SQL Developer 会更好。

于 2013-02-13T19:03:22.463 回答
1

出于调试目的,您可以拥有每个元素长度为 1000 且最多为 4 个元素的 varchar2 数组,这样它将克服调试时超过 1000 个字符限制的问题,并且您仍然可以监控 varchar2(4000) 的值

于 2013-02-13T06:09:50.303 回答