2017-05-29 9 views
0

従業員の給与に関する画面の詳細を表示するストアドプロシージャを作成しましたが、これはうまくいきますが、画面に表示される情報を修正したいと思います。私は、画面上の "列"を注文するためにLPADとRPAD機能を使用しようとしましたが、機能しないか、おそらく私はうまく使用しませんでした。あなたは何か考えていますか?ありがとう。Oracle PL/SQL - 画面に表示されるデータをどのようにフォーマットできますか?

enter image description here

私はそのような何かを見たいのですがメモ帳の情報をエクスポートする場合:表示

  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; 

最新情報

enter image description here

+1

は、余分なスペースのカップルから離れてOKルックス'Cantidad'の前と 'Retenciones'の列の数字。ヌル値はパディングされず、スペースはデフォルトのパディング文字なので、 '' ''は必要ないことに注意してください。 (btwはそのメモ帳やExcelですか?) –

+0

申し訳ありませんが、それはExcel用ですが、まだ動作しません。出力をフォーマットする機能や何かがありますか?あるいは私はLPADとRPADの機能を試し続けなければなりませんか? –

+1

Excel用の場合は、列のテキストを整列させるのではなく、区切り文字(タブまたはパイプなど)を使用することがあります。整列させる必要がある場合は、 'lpad'と' rpad'がその作業を行うべきです。右側のパディングの代わりに 'char'変数にテキストを代入することもできます(同じ値に注意してください)。 –

答えて

1

あなたはLPADでこれを行うことができますおよびRPAD。ほんの少しの数学。あなたはCantidad

2)Totalesに2つのスペースを追加する必要があります

1)も、静的に)最初に、その後の数字のために(パディングする必要があります。

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; 
関連する問題