2010-04-06 2 views
6

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

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

выходы:

string 

вместо:

     string 

ответ

14

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

Использование

SET SERVEROUTPUT ON FORMAT WRAPPED 

или

SET SERVEROUTPUT ON FORMAT TRUNCATED 

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


С documentation (PDF) из SET SERVEROUT WORD_WRAPPED (который является стандартным):

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

3

Можете добавить, что если вы хотите сохранить ведущие пространства, но обрезайте конечные пространства, используйте: установите trimspool on в вашем sql. Таким образом, ведущие пробелы будут сохранены, но длина линии будет определяться фактической длиной текста на выходе.