tbwshc

DBMS_OUTPUT包无法输出空行

正常情况下,DBMS_OUTPUT包无法直接输出一个空行。

 

 

以前还真没有注意这个问题,前两天想在输出结果的时候进行一下简单的格式化,发现了这个问题:

SQL> set serverout on
SQL> begin
2 dbms_output.put_line('a');
3 dbms_output.put_line(' ');
4 dbms_output.put_line('b');
5 dbms_output.new_line;
6 dbms_output.put_line('c');
7 end;
8 /
a
b
c

PL/SQL procedure successfully completed.

导致问题的原因在于,如果使用DBMS_OUTPUTB包输出的一行都是不可见字符,那么这行内容被DBMS_OUTPUT包忽略掉。

虽然DBMS_OUTPUT包本身并没有提供开关来屏蔽这个属性,不过这个问题依然很容易解决,最简单的方法莫过于直接把回车包含在字符串中:

SQL> begin
2 dbms_output.put_line('a
3
4 b');
5 dbms_output.put_line('
6 c');
7 end;
8 /
a

b

c

PL/SQL procedure successfully completed.

当然这种方法有可能导致PL/SQL代码的可读性变差,也容易影响代码的缩进格式,此外还有一种方式:

SQL> begin
2 dbms_output.put_line('a' || chr(10) || chr(13));
3 dbms_output.put_line('b');
4 dbms_output.put_line(chr(10) || chr(13) || 'c');
5 end;
6 /
a

b

c

PL/SQL procedure successfully completed.

posted on 2012-08-23 16:40 chen11-1 阅读(1802) 评论(0)  编辑  收藏