views:

184

answers:

2

I am trying to right-align the output of some PL/SQL code, but dbms_output.put_line is trimming the leading whitespace from my strings. How do I make it stop? Or is there a better way to output strings with leading whitespace?

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

outputs:

string

instead of:

                        string
+9  A: 

The problem is not with dbms_output but with SQL*Plus.

Use

SET SERVEROUTPUT ON FORMAT WRAPPED

or

SET SERVEROUTPUT ON FORMAT TRUNCATED

to preserve the spaces.


From the documentation (PDF) of SET SERVEROUT WORD_WRAPPED (which is the standard):

SQL*Plus left justifies each line, skipping all leading whitespace.

Peter Lang
+1  A: 

Might add that if you want to preserve the leading spaces but trim the trailing spaces use: set trimspool on in your sql. This way the leading spaces will be preserved but the line length will be determined by the actual length of text in the output.

Joe