Oracle PL/SQL-如何格式化屏幕上显示的数据?

Oracle PL/SQL-如何格式化屏幕上显示的数据?,oracle,stored-procedures,plsql,dbms-output,Oracle,Stored Procedures,Plsql,Dbms Output,我已经编写了一个存储过程来在屏幕上显示有关员工工资的详细信息,效果非常好,但我想修复屏幕上显示的信息。我尝试使用LPAD和RPAD函数在屏幕上对“列”进行排序,但不起作用,或者我可能没有很好地使用它。你知道吗?谢谢 FOR j IN c_recibos (t_emp(i).numero, t_emp(i).legajo) LOOP DBMS_OUTPUT.PUT_LINE( R

我已经编写了一个存储过程来在屏幕上显示有关员工工资的详细信息,效果非常好,但我想修复屏幕上显示的信息。我尝试使用LPAD和RPAD函数在屏幕上对“列”进行排序,但不起作用,或者我可能没有很好地使用它。你知道吗?谢谢

            FOR j IN c_recibos (t_emp(i).numero, t_emp(i).legajo)
            LOOP
                DBMS_OUTPUT.PUT_LINE(
                    RPAD(j.concepto, 24, ' ') || ' ' || 
                    LPAD(j.cantidad, 10, ' ') || ' ' || 
                    RPAD(TO_CHAR(j.haberes, '0000.00'), 9, ' ') || ' ' || 
                    LPAD(TO_CHAR(j.retenciones, '0000.00'), 28, ' '));
            END LOOP;

            FOR k IN c_totales(t_emp(i).numero, t_emp(i).legajo)
            LOOP
                DBMS_OUTPUT.PUT_LINE(
                    'Totales: ' || k.total_haberes || ' ' || 
                    k.total_retenciones);
            END LOOP;

            DBMS_OUTPUT.PUT_LINE('------------');
        END LOOP;
显示的当前信息:

当我将信息导出到记事本时,我希望看到如下内容:


您可以使用
LPAD
RPAD
执行此操作。只是一点数学题

1) 您应该在
Cantidad

2)
总计
也应填充(先静态填充第一个,然后填充数字):


除了“Cantidad”前面的几个空格和“retentiones”列中的数字外,看起来还可以。请记住,空值不会被填充,空格是默认的填充字符,因此您不需要使用
'
。(顺便说一句,那是记事本还是Excel?)对不起,这是Excel的,但还不能用。是否有任何函数或东西来格式化输出?或者我应该继续尝试LPAD和RPAD函数?如果它仅用于Excel,那么您可以使用分隔符(例如,制表符或管道),而不是对齐列中的文本。如果必须对齐,则应使用
lpad
rpad
进行对齐。您可以将文本指定给
char
变量来代替右填充,因为它涉及到同样的事情(对于空值也要同样小心)。
 FOR j IN c_recibos (t_emp(i).numero, t_emp(i).legajo)
 LOOP
     DBMS_OUTPUT.PUT_LINE(
         RPAD(j.concepto,                        24, ' ') || ' ' || 
         LPAD(j.cantidad,                        12, ' ') || ' ' ||
         RPAD(TO_CHAR(j.haberes, '0000.00'),      9, ' ') || ' ' || 
         LPAD(TO_CHAR(j.retenciones, '0000.00'), 28, ' ')
     );
 END LOOP;

 FOR k IN c_totales(t_emp(i).numero, t_emp(i).legajo)
 LOOP
     DBMS_OUTPUT.PUT_LINE(
         RPAD('Totales:',                              24, ' ') || ' ' || 
         LPAD(':',                                     12, ' ') || ' ' || 
         RPAD(TO_CHAR(k.total_haberes, '0000.00'),      9, ' ') || ' ' || 
         LPAD(TO_CHAR(k.total_retenciones, '0000.00'), 28, ' ')
     );
 END LOOP;