create or replace function center_dbms (text in varchar, linesize in number) return varchar is
strsize number;
half number;
begin
strsize := length(text);
half := trunc((linesize-strsize)/2);
return rpad(chr(160),half,chr(160))||
text||lpad(' ',half+mod(linesize-strsize,2));
end;
/
set serveroutput on
begin
dbms_output.put_line(center_dbms('This is a',100));
dbms_output.put_line(center_dbms('sample',100));
dbms_output.put_line(center_dbms('of centered',100));
dbms_output.put_line(center_dbms('text',100));
dbms_output.put_line(center_dbms('using',100));
dbms_output.put_line(center_dbms('DBMS_OUTPUT.PUT_LINE',100));
end;
/
This is a
sample
of centered
text
using
DBMS_OUTPUT.PUT_LINE
[code]
If you exceed 2000 characters of output using dbms_output.put_line, I presume you are aware of how to increase the dbms_output buffer up to 1M:
dbms_output.enable(1000000)
An alternate (preferred) method for outputting flat text is to use PL/SQL's utl_file functionality that lets you READ, WRITE, and APPEND from/to a flat text file.
For both dbms_output.put_line and utl_file, you can embed control characters that can [b]BOLD[/b] and [i]italicize[/i] your output depending upon your target display/word processing environment.
Let us know if this was any help for you.
[santa]Mufasa
(aka Dave of Sandy, Utah, USA @ 17:20 (18Dec03) GMT, 10:20 (18Dec03) Mountain Time)