DBMS_OUTPUTで空行を出力する方法


DBMS_OUTPUTで空行を出力する方法についてです。


「DBMS_OUTPUT.PUT_LINE」を使うときにはまず、「set serveroutput on」を設定します。
しかしこれだと、空行が表示できません。また、行頭に半角空白があってもそれを出力しません。

set serveroutput on 

BEGIN
	DBMS_OUTPUT.PUT_LINE('  hoge  ');
	DBMS_OUTPUT.PUT_LINE('');
	DBMS_OUTPUT.NEW_LINE;
	DBMS_OUTPUT.PUT_LINE('  hoge  ');
END;
/

実行結果
hoge
hoge


空行や行頭の半角空白を出力したい場合には「set serveroutput on format wrapped」を指定します。
※省略形は「set serverout on format wrap」です。

set serveroutput on format wrapped

BEGIN
	DBMS_OUTPUT.PUT_LINE('  hoge  ');
	DBMS_OUTPUT.PUT_LINE('');
	DBMS_OUTPUT.NEW_LINE;
	DBMS_OUTPUT.PUT_LINE('  hoge  ');
END;
/

実行結果
  hoge
  hoge

ただし、これでも行末の半角空白は削除されます。そこはあきらめるしかなさそうです。


ちなみに

DBMS_OUTPUT.PUT_LINE(CHR(10));
DBMS_OUTPUT.PUT_LINE(CHR(9));
などと、見えない制御文字を出力する方法を紹介しているサイトもありましたが、あまり好ましくないと思います。

2011/06/27