Как предотвратить dbms_output.put_line от обрезания лидирующих пробелов? - PullRequest
6 голосов
/ 06 апреля 2010

Я пытаюсь выровнять вывод некоторого кода PL / SQL по правому краю, но dbms_output.put_line обрезает начальные пробелы в моих строках. Как мне это остановить? Или есть лучший способ для вывода строк с пробелами?

dbms_output.put_line(lpad('string', 30, ' '));

выходы:

string

вместо:

                        string

Ответы [ 2 ]

15 голосов
/ 06 апреля 2010

Проблема не в dbms_output, а в SQL * Plus.

Используйте

SET SERVEROUTPUT ON FORMAT WRAPPED

или

SET SERVEROUTPUT ON FORMAT TRUNCATED

для сохранения пробелов.


Из документации (PDF) из SET SERVEROUT WORD_WRAPPED (что является стандартом):

SQL * Плюс слева выравнивает каждую строку, пропуская все начальные пробелы.

3 голосов
/ 24 сентября 2010

Можно добавить, что если вы хотите сохранить начальные пробелы, но обрезать завершающие пробелы, используйте:

set trimspool on

Таким образом, первые пробелы будут сохранены, но длина строки будет определяться фактической длиной текста в выводе.

...