Oracle trimspool только конечные пробелы (не ведущие пробелы) - PullRequest
6 голосов
/ 21 января 2011

Мне интересно, есть ли какие-нибудь хитрости, чтобы получить trimspool, чтобы обрезать только пробел справа.

У меня есть код, который использует dbms_output.put_line для печати на консоль, и вывод часто имеет отступы, чтобы было легче сканировать глазами. Я установил ширину линии довольно большой, чтобы облегчить чтение некоторых выходных данных, поэтому я также установил trimspool, чтобы избавиться от лишних пробелов. Единственная проблема заключается в том, что теперь ведущий, пробел которого удаляется, а также замыкающий пробел. Есть ли способ это исправить? Я мог бы добавить начальный (перед начальным пробелом) символ "." в некоторые выходные операторы, но мне не разрешено изменять код в большинстве пакетов.


Вот что он выводит без тримминга:

 level 1                          (EOL)
     level 2                      (EOL)
       Some data                  (EOL)

Вот что он выводит при включенном trimspool:

level 1(EOL)
level 2(EOL)
Some data(EOL)

Вот что я хочу:

 level 1(EOL)
     level 2(EOL)
       Some data(EOL)

1 Ответ

8 голосов
/ 21 января 2011

Я думаю, вы после

set serveroutput on size 100000 format wrapped

если я понимаю ваш вопрос.

Если я сделаю это:

set serveroutput on size 1000000

begin
  dbms_output.put_line('no indent');
  dbms_output.put_line('   indent');
end;
/

SQL * Plus выводит:

no indent
indent

Если, однако, я делаю

set serveroutput on size 1000000 format truncated

begin
  dbms_output.put_line('no indent');
  dbms_output.put_line('   indent');
end;
/

SQL * Plus выводит:

no indent
   indent

Вам нужно set trimspool on, чтобы устранить пробелы до eol.

...