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

时间:2013-06-22 09:30:10

标签: oracle plsql format

我有一个在spool中生成表格的程序:

create procedure.....
......
loop
...
dbms_output.put_line(p_taskno||'   '||p_descrip||'  '||p_hrs||' '||p_start_date);
.........

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

***************************************                                         
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  

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

1 个答案:

答案 0 :(得分:11)

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

所以你希望taskno与其标题对齐,即六个字符。因为它是一个数字,你需要它在右边对齐:

lpad(to_char(taskno), 6)

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

rpad(p_description, 30)

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