如何格式化dbms_output.put_line PL/SQL创建的表?

CHE*_*HKA 3 oracle format plsql

我有一个过程,生成一个表spool:

create procedure.....
......
loop
...
dbms_output.put_line(p_taskno||'   '||p_descrip||'  '||p_hrs||' '||p_start_date);
.........
Run Code Online (Sandbox Code Playgroud)

输出是正确的,但格式不正确:

***************************************                                         
ABC Company         Projects:                                                   
Project: 5555                                                                   
TaskNo  Description      Hours StartDate                                        
_____________________________________________                                   
11      Prototype New Screens  30 23-AUG-06                                     
12      Convert Data Files  10.5 15-SEP-06                                      
13      Create Test Plan  15 14-AUG-06                                          
62      Develop Enterprise Model  280 26-OCT-06                                 
_____________________________________________                                   
Number of Tasks: 4                                                              
Total Project Hours: 335.5  
Run Code Online (Sandbox Code Playgroud)

我无法使用,column description format a20 word_wrapped因为表是结果dbms_output.put_line.我该如何格式化呢?

APC*_*APC 12

您需要计算出列的最大大小,然后用空格填充输出.

所以你想要taskno与它的标题对齐,这是六个字符.因为它是一个数字,你会希望它在右边对齐:

lpad(to_char(taskno), 6)
Run Code Online (Sandbox Code Playgroud)

而描述是一个字符串,所以你想要在左边对齐它

rpad(p_description, 30)
Run Code Online (Sandbox Code Playgroud)

也可以在标题的元素上使用这些函数,以获得最佳输出.