set serveroutput on  size 1000000
begin
   dbms_output.put_line('aaaaa');
   /* PROCEDURE NAME */
   proce_test;
end;
/这个时候 为什么 aaaaa 不能显示出来?
如果把 proce_test; 注释掉  就可以打出来。
或者dbms_output.put_line('aaaaa'); 放在proce_test;后面也能打出来。什么原因,请指教。

解决方案 »

  1.   

    要看proce_test的内容,其中可能有调用dbms_output.get_line之类的过程。例如
    SQL> create or replace procedure p_test
      2  as
      3    s varchar2(1000);
      4    i number;
      5  begin
      6    dbms_output.get_line(s,i);
      7  end;
      8  /过程已创建。SQL> set serveroutput on  size 1000000
    SQL> begin
      2    dbms_output.put_line('aaaaa');
      3    /* PROCEDURE NAME */
      4    p_test;
      5  end;
      6  /PL/SQL 过程已成功完成。SQL> begin
      2    p_test;
      3    dbms_output.put_line('aaaaa');
      4    /* PROCEDURE NAME */
      5  end;
      6  /
    aaaaaPL/SQL 过程已成功完成。
      

  2.   

    proce_test;要看你这里写什么了,可能清屏了吧
      

  3.   


    确实 是调用dbms_output.get_line
    但是 没太明白 
    get_line 和put_line之间的 关系
    看书上说
    put_line 是将一完整行信息写入缓冲,
    get_line 取得缓冲区的单行信息。但是看了 上面的 例子  似乎 二者之间 有很微妙的关系?SQL>   VAR S varchar2(100)
    SQL>   VAR i number
    SQL> begin
      2  dbms_output.enable;
      3    dbms_output.put_line('aaa');
      4    dbms_output.get_line(:S,:i);
      5  --dbms_output.put_line(:i);
      6   -- dbms_output.put_line('dddd');
      7  end;
      8  /PL/SQL 过程已成功完成。SQL>   VAR S varchar2(100)
    SQL>   VAR i number
    SQL> begin
      2  dbms_output.enable;
      3    dbms_output.put_line('aaa');
      4    dbms_output.put('bbb');
      5    dbms_output.new_line;
      6    dbms_output.get_line(:S,:i);
      7    --  dbms_output.put_line(:i);
      8   -- dbms_output.put_line('dddd');
      9  end;
     10  /
    bbbPL/SQL 过程已成功完成。
      

  4.   


    proce_test;里面
    1,有可能是清屏啦,所以屏幕上看不到而已
    2,里面已经把前面的值取走啦,所以显示再屏幕上为空白,看不到效果吧。