How can I insert data in a loop until a specified date?

-1
  

ORA-01841: the (complete) value of the year should be between -4713 and +9999, and not   must be equal to 0   ORA-06512: online 8

DECLARE 
   LIMITE DATE := '30-01-2018';
   CONTADOR NUMBER(2) := 0;
   ACTUAL DATE := SYSDATE;
BEGIN
   LOOP
            CONTADOR := CONTADOR + 1;
            ACTUAL := ACTUAL + CONTADOR;
            INSERT INTO STK_COTIZACION(COT_FEC, COT_MON, COT_TASA) VALUES 
(ACTUAL, 1, 5800);
            EXIT WHEN ACTUAL <= '30-01-2018';
   END LOOP;
   DBMS_OUTPUT.PUT_LINE('CONTADOR: ' || TO_CHAR(CONTADOR) || ' ACTUAL: ' || 
TO_CHAR(ACTUAL));
END;
    
asked by ArielGamer - 004 27.12.2018 в 14:03
source

1 answer

1

Dear

I suggest you use a while loop in the loop, I'll attach an example:

CREATE OR REPLACE PROCEDURE TEST_FECHAS IS

BEGIN
    DECLARE 
       LIMITE DATE := '28-02-2019';
       CONTADOR INT := 1;
       ACTUAL DATE := SYSDATE;
    BEGIN

    WHILE ACTUAL <= LIMITE
       LOOP
            DBMS_OUTPUT.PUT_LINE('CONTADOR: ' || TO_CHAR(CONTADOR) || ' ACTUAL: ' || TO_CHAR(ACTUAL));
            /* Codigo de Insert, update o delete aquí */
            ACTUAL := ACTUAL + 1;
            CONTADOR := CONTADOR + 1;
       END LOOP;
    END;
END TEST_FECHAS;

In this case I only use "counter" because you declared it but I do not mix it with "current", because that way you do not advance day by day, but you go skipping the days 01-02-04-07-11 etc. Do you understand ?.

    
answered by 24.01.2019 в 14:01