diff --git a/oracle/roa-romconstruct/PACK_CONTAFIN.pck b/oracle/roa-romconstruct/PACK_CONTAFIN.pck index b068300..44753a9 100644 --- a/oracle/roa-romconstruct/PACK_CONTAFIN.pck +++ b/oracle/roa-romconstruct/PACK_CONTAFIN.pck @@ -5662,8 +5662,8 @@ CREATE OR REPLACE PACKAGE BODY "PACK_CONTAFIN" is RETURN; END IF; - -- BULK UPDATE all rows at once using FORALL - FORALL i IN 1 .. S.COUNT + -- UPDATE all rows using FOR loop (Oracle 10g compatible) + FOR i IN 1 .. S.COUNT LOOP UPDATE JC2007 J SET J.TOTCTVA = J.TOTCTVA + (CASE WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND @@ -5906,9 +5906,8 @@ CREATE OR REPLACE PACKAGE BODY "PACK_CONTAFIN" is AND J.ID_FACT = S(i).ID_FACT AND NVL(J.ID_SUCURSALA, -99) = NVL(S(i).ID_SUCURSALA, -99); - -- Populate SI and SD collections for INSERT and DELETE - FOR i IN 1 .. S.COUNT LOOP - IF SQL%BULK_ROWCOUNT(i) = 0 THEN + -- Check result of UPDATE and populate SI/SD collections + IF SQL%ROWCOUNT = 0 THEN -- No row was updated -> need to INSERT SI.EXTEND; SI(SI.COUNT) := S(i); @@ -5919,9 +5918,9 @@ CREATE OR REPLACE PACKAGE BODY "PACK_CONTAFIN" is END IF; END LOOP; - -- BULK INSERT for new rows + -- INSERT for new rows (Oracle 10g compatible) IF SI.COUNT > 0 THEN - FORALL i IN 1 .. SI.COUNT + FOR i IN 1 .. SI.COUNT LOOP INSERT INTO JC2007 (AN, LUNA, @@ -6300,12 +6299,13 @@ CREATE OR REPLACE PACKAGE BODY "PACK_CONTAFIN" is SI(i).RORTD9, SI(i).RORTD5, SI(i).ID_SUCURSALA); + END LOOP; END IF; - -- BULK DELETE for rows where all values became 0 after UPDATE + -- DELETE for rows where all values became 0 after UPDATE (Oracle 10g compatible) -- Only executed when tnScrie = nStergere IF SD.COUNT > 0 AND tnScrie = pack_contafin.nStergere THEN - FORALL i IN 1 .. SD.COUNT + FOR i IN 1 .. SD.COUNT LOOP DELETE FROM JC2007 J WHERE J.AN = SD(i).AN AND J.LUNA = SD(i).LUNA @@ -6446,6 +6446,7 @@ CREATE OR REPLACE PACKAGE BODY "PACK_CONTAFIN" is AND J.ROTN = 0 AND J.ROTN50 = 0 AND J.ROTN100 = 0; + END LOOP; END IF; END;