SERVEROUTPUTの暗黙のLTRIMを制御する

SERVEROUTPUTはデフォルト状態だと暗黙的にLTRIMしてしまうので、いやなら

set serveroutput on format wrapped

としましょう。formatの指定は

  • WRAPPED
    • 行サイズを超過する場合に文字ベースで折り返しを行なう。
  • WORD_WRAPPED
    • 行サイズを超過する場合に単語ベースで折り返しを行なう。(デフォルト)
  • TRUNCATED
    • 行サイズを超過した部分は切り捨てされる。

という感じ

これで以下の結果が

DECLARE
BEGIN
    DBMS_OUTPUT.PUT_LINE('    a');
END;
    a

となります。

まあ、そんな要件があるならDBMS_FILEを使いましょうということですね。