SQL*Plus with its default settings ignores leading spaces when you attempt to output a character string variable using DBMS_OUTPUT.PUT_LINE procedure:
SQL> exec DBMS_OUTPUT.PUT_LINE(' 12345') 12345
As you can see in the above example, two leading spaces are trimmed.
To make SQL*Plus showing the leading space characters, we need to change the following setting:
SET SERVEROUTPUT ON FORMAT WRAPPED
Now, the spaces will be preserved:
SQL> exec DBMS_OUTPUT.PUT_LINE(' 12345') 12345
Alternatively, you can set the format to TRUNCATED:
SQL> SET SERVEROUTPUT ON FORMAT TRUNCATED SQL> SQL> exec DBMS_OUTPUT.PUT_LINE(' 12345') 12345 PL/SQL procedure successfully completed.
The default setting is WORD WRAPPED:
SQL> SET SERVEROUTPUT ON FORMAT WORD_WRAPPED SQL> SQL> exec DBMS_OUTPUT.PUT_LINE(' 12345') 12345 PL/SQL procedure successfully completed. SQL> SHOW SERVEROUTPUT serveroutput ON SIZE UNLIMITED FORMAT WORD_WRAPPED
My Oracle Group on Facebook:
If you like this post, you may want to join my new Oracle group on Facebook: https://www.facebook.com/groups/sqlpatterns/
Would you like to read about many more tricks and puzzles?
For more tricks and cool techniques check my book “Oracle SQL Tricks and Workarounds” for instructions.