Afficher un texte formaté dans un script…

Avez-vous remarqué? Lorsque vous passez un espace ou une ligne avec dbms_output et set serveroutput on dans SQL*Plus, celui-ci n’obeit pas avec zèle:

set serveroutput on

begin
dbms_output.put_line('Ligne sans espace');
dbms_output.put_line('> Ligne avec espaces et 1er caractere');
dbms_output.put_line(' Ligne avec espaces, sans 1er caractere');
dbms_output.new_line;
dbms_output.put_line('nouvelle ligne');
end;
/

Ligne sans espace
> Ligne avec espaces et 1er caractere
Ligne avec espaces, sans 1er caractere
nouvelle ligne

Et bien… la faute au format d’affichage par défaut de SQL*Plus qui gère les espaces intelligemment:

show serveroutput

serveroutput ON SIZE UNLIMITED FORMAT WORD_WRAPPED

Si vous revenez à un format d’affichage moins intelligent, vous pourrez passez des lignes selon vos envies:

set serveroutput on format trun

show serveroutput
serveroutput ON SIZE UNLIMITED FORMAT TRUNCATED

begin
dbms_output.put_line('Ligne sans espace');
dbms_output.put_line('> Ligne avec espaces et 1er caractere');
dbms_output.put_line(' Ligne avec espaces, sans 1er caractere');
dbms_output.new_line;
dbms_output.put_line('nouvelle ligne');
end;
/

Ligne sans espace
> Ligne avec espaces et 1er caractere
Ligne avec espaces, sans 1er caractere

nouvelle ligne

Me voilà redevenu maitre de mes espaces!