为什么我的VARCHAR2在我的PL / SQL中被转换为LONG?

时间:2013-02-12 17:29:07

标签: oracle oracle11g plsqldeveloper

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

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

但是,在调试我的过程时,出现了意外情况:我在vSQL上设置了一个监视,当长度vSQL达到1000或更高时,监视窗口中的值从< em>内容 vSQL literal '(长值)',我无法再查看vSQL的内容。

为什么会这样?有没有什么办法可以让我vSQL来调试我的程序时仍能查看它?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

出于调试目的,你可以拥有每个元素长度为1000的varchar2数组,最多可以有4个元素,这样就可以解决超过1000个限制的问题,你仍然可以监控varchar2(4000)&#39 ; s值