如何格式化此块的Oracle输出?

时间:2015-06-14 14:28:37

标签: plsql oracle11g

我被困在这个语句块上,并且在代码运行时不知道如何对输出进行编程,以显示付款金额为10.00美元,余额保持相同的格式。我的代码也提示我两次idpledge ...我在代码中有一些我不太了解的主题标记。使用Oracle 11g 2e和本书并不是很有帮助。如果有关于我正在听的初学者书籍或资源的建议(阅读)。代码如下:

SET SERVEROUTPUT ON;

DECLARE
  pay_num           NUMBER(2) := 0; /*initialize to 0 */
  loop_count        NUMBER(2) := 12; /*intialize to max number of months */
  pay_amt           NUMBER(8,2);
  pledge_bal        NUMBER(8,2);
  v_pledgeamt       NUMBER(8,2);
  start_date        DATE := '04-OCT-2012';
  due_date      DATE;
  v_due_date        VARCHAR2(15);

BEGIN

  SELECT pledgeamt INTO v_pledgeamt
  FROM DD_PLEDGE
  WHERE idpledge=&idpledge;

  pay_amt := (v_pledgeamt / loop_count);
  due_date := start_date;
  pledge_bal := (v_pledgeamt - pay_amt);

  FOR i IN 1..loop_count LOOP

    pay_num := pay_num + 1;
    v_due_date := TO_CHAR(due_date, 'MM-DD-YYYY');
    due_date := add_months(due_date, 1);
    pledge_bal := (pledge_bal - pay_amt);

    DBMS_OUTPUT.PUT_LINE (
      'Payment Num: ' || pay_num
      || ' ' || 'Due Date: ' || v_due_date
      || ' ' || 'Amount Due: ' || pay_amt  
      || ' ' || 'Balance: ' || TO_CHAR(pledge_bal, '$')); /* how to format with $*/

  END LOOP;
END;

1 个答案:

答案 0 :(得分:0)

Docs所述,您可以将to_char与正确的格式化程序一起使用。在你的情况下,它将是to_char(pledge_bal, '$9,999.99') 使用 '$ 9,999.99' 格式可实现以下目标:

  • 返回指定位置的逗号。您可以在数字格式模型中指定多个逗号。

  • 返回小数点,即指定位置的句点(。)。

  • 返回带有美元符号的值。

如果需要,您可以在上述链接中查看更多参数。