在做一份报表,拼SQL后赋值给一个varch2变量,出错,想观察SQL语句,在PL/SQL Developer下调试存储过程,但调试器对这个变量只显示long value,不知该怎么观察到这个变量呢?

解决方案 »

  1.   

    可以用  length 函数打出来。看看它的长度。
      

  2.   

    你可以用dbms_output.put_line(str) 输出varchar2变量的值
      

  3.   

    使用test窗口测试,test窗口有变量观察的窗口.
      

  4.   

    set serveroutput ON SIZE UNLIMITED FORMAT WORD_WRAPPED
      

  5.   

    变量值那里不是可以点的么?在text editor里也看不到?
      

  6.   

    可以。你用  pl/sql developer debug 窗口 在你想看的变量值的下面一行设置一个断点。
    在下面的[窗口,把你想看的变量名写到变量栏里面。。后面的一列就是你想要看的值。
      

  7.   

    text editor就显示(Long value),跟watch窗口一样的
      

  8.   

    pl/sql test窗口调试时,只要选择你要看的自标量就动会显示值的 。
      

  9.   

    我也发现这个问题了,只要varchar2变量的长度大于1000就显示longvalue,楼主怎么解决的?
      

  10.   

    create or replace procedure proc_show_value
    as
    v_a varchar2(32767);
    begin
     for i in 1..1000 loop
     v_a:=chr(ascii('a')+mod(i,27))||v_a;
     end loop;
     dbms_output.put_line(v_a);
    end;
    调整循环上限测试了下.
    当循环次数n<=999时,test窗口的text editor可以正常显示v_a的值.
    当次数1000=<n<=2000时,可以在command 窗口正常打印v_a的值.
    当次数 n>2000时,command窗口将会报错.ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes;
    对于过长的varchar2变量,还是自己根据长度写个循环,每2000个一次,打印到command窗口吧.想不出什么好办法.
      

  11.   

    可以设置打印窗口输出数据的长度:set long 4000 试一下!