Oracle 当循环停止时

Oracle 当循环停止时,oracle,plsql,while-loop,Oracle,Plsql,While Loop,我试图找出如何将其写入WHILE循环,并在达到24时停止。 这就是我到目前为止所拥有的,当我运行它的时候,它会一直持续下去 DECLARE startD DATE := SYSDATE; monthlyP NUMBER(8,2) := 120; totalP NUMBER(3) :=24; dueD DATE; BEGIN WHILE totalP <=24 LOOP totalP := totalP -1; sta

我试图找出如何将其写入WHILE循环,并在达到24时停止。 这就是我到目前为止所拥有的,当我运行它的时候,它会一直持续下去

DECLARE
    startD DATE := SYSDATE;
    monthlyP NUMBER(8,2) := 120;
    totalP NUMBER(3) :=24;
    dueD DATE;

BEGIN
    WHILE totalP <=24 LOOP
        totalP := totalP -1;
        startD := add_months(startD,1);
    
        dbms_output.put_line('Payment Number' || totalP);
        dbms_output.put_line('Date Due' || startD);
        dbms_output.put_line('Payment amount $'||to_char(monthlyP,'$9999.99'));
        dbms_output.put_line('Donation balance' || totalP );

    END LOOP;
END;
声明
开始日期:=系统日期;
月数(8,2):=120;
总数(3):=24;
到期日;
开始
当totalP时,您可以引入一个“counter”变量,将其设置为0,并在每次迭代时将其增加1

DECLARE
startD DATE := SYSDATE;
monthlyP NUMBER(8,2) := 120;
totalP constant NUMBER(3) := 24;
counter number := 0 ;
dueD DATE;


BEGIN
  WHILE counter < totalP LOOP
    counter := counter + 1;

    startD := add_months(startD,1);
    -- use to_char() - explicit conversion - for every || here ...
    dbms_output.put_line('Payment Number ' || to_char( counter ) );
    dbms_output.put_line('Date Due ' || to_char( startD, 'YYYY-MM-DD' ) );
    dbms_output.put_line('Payment amount $ '||to_char(monthlyP,'$9999.99'));
    dbms_output.put_line('Donation balance ' || to_char( totalP ) );
  END LOOP;
END;
/

您可以引入一个“counter”变量,将其设置为0,并在每次迭代时将其增加1,例如

DECLARE
startD DATE := SYSDATE;
monthlyP NUMBER(8,2) := 120;
totalP constant NUMBER(3) := 24;
counter number := 0 ;
dueD DATE;


BEGIN
  WHILE counter < totalP LOOP
    counter := counter + 1;

    startD := add_months(startD,1);
    -- use to_char() - explicit conversion - for every || here ...
    dbms_output.put_line('Payment Number ' || to_char( counter ) );
    dbms_output.put_line('Date Due ' || to_char( startD, 'YYYY-MM-DD' ) );
    dbms_output.put_line('Payment amount $ '||to_char(monthlyP,'$9999.99'));
    dbms_output.put_line('Donation balance ' || to_char( totalP ) );
  END LOOP;
END;
/

您运行
totalP:=totalP-1
,即它将运行24,23,22,21,20。。。当totalP 0 loop
运行时,您的循环条件是
,即运行
totalP:=totalP-1
,即24,23,22,21,20。。。循环条件为
,而totalP 0循环为