0

我编写了一个存储过程来在屏幕上显示有关员工工资的详细信息,效果很好,但我想修复屏幕上显示的信息。我尝试使用 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;

当前显示的信息:

在此处输入图像描述

当我将信息导出到记事本时,我希望看到类似的内容:

在此处输入图像描述

4

1 回答 1

1

您可以使用LPAD和来做到这一点RPAD。只需做一点数学运算。

1)你应该添加2个空格Cantidad

2)Totales也应该被填充(首先是静态的,然后是数字):

 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;
于 2017-05-30T06:27:43.353 回答