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;后面也能打出来。什么原因,请指教。
begin
dbms_output.put_line('aaaaa');
/* PROCEDURE NAME */
proce_test;
end;
/这个时候 为什么 aaaaa 不能显示出来?
如果把 proce_test; 注释掉 就可以打出来。
或者dbms_output.put_line('aaaaa'); 放在proce_test;后面也能打出来。什么原因,请指教。
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 过程已成功完成。
确实 是调用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 过程已成功完成。
proce_test;里面
1,有可能是清屏啦,所以屏幕上看不到而已
2,里面已经把前面的值取走啦,所以显示再屏幕上为空白,看不到效果吧。