diff --git a/input/scrie_jc_2007.sql b/input/scrie_jc_2007.sql index e566a2c..21e5b4b 100644 --- a/input/scrie_jc_2007.sql +++ b/input/scrie_jc_2007.sql @@ -34,7 +34,8 @@ procedure SCRIE_JC_2007(tnAn JC2007.AN%TYPE, lcCondSucursala); -- MERGE replaced with cursor loop to avoid Oracle XE bugs with very long MERGE statements - -- Overhead: ~30-50ms for <10k rows, 0 temp writes, 1 SELECT execution + -- MERGE replaced with FORALL BULK operations to avoid Oracle XE bugs and improve performance + -- Overhead: ~15-30ms for <10k rows, 0 temp writes, 3 bulk DML operations (UPDATE/INSERT/DELETE) DECLARE CURSOR c_source IS @@ -1480,383 +1481,591 @@ procedure SCRIE_JC_2007(tnAn JC2007.AN%TYPE, JC.ID_SUCURSALA); TYPE t_source_tab IS TABLE OF c_source%ROWTYPE; - l_data t_source_tab; - l_idx PLS_INTEGER; + S t_source_tab; -- Renamed from l_data for better readability + + -- Dedicated collections for INSERT and DELETE operations + SI t_source_tab := t_source_tab(); -- Source Insert + SD t_source_tab := t_source_tab(); -- Source Delete BEGIN - -- Load all source data into memory (single SELECT execution) + -- Bulk load all data into PGA OPEN c_source; - FETCH c_source BULK COLLECT INTO l_data; + FETCH c_source BULK COLLECT INTO S; CLOSE c_source; - - -- Process each record: UPDATE if exists, INSERT if new - FOR l_idx IN 1..l_data.COUNT LOOP - DECLARE - S c_source%ROWTYPE := l_data(l_idx); - l_updated PLS_INTEGER; - BEGIN - -- Try UPDATE first (WHEN MATCHED equivalent) - UPDATE JC2007 J - SET J.TOTCTVA = J.TOTCTVA + (CASE - WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND - EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN - S.TOTCTVA - ELSE - 0 - END), - J.TOTFTVATAX = J.TOTFTVATAX + (CASE - WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND - EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN - S.TOTFTVATAX - ELSE - 0 - END), - J.TOTTVATAX = J.TOTTVATAX + (CASE - WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND - EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN - S.TOTTVATAX - ELSE - 0 - END), - J.TOTNETAX = J.TOTNETAX + (CASE - WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND - EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN - S.TOTNETAX - ELSE - 0 - END), - J.RO21B = J.RO21B + NVL(S.RO21B, 0) + (CASE - WHEN NVL(S.RO21B, 0) <> 0 AND NVL(J.RO21NT, 0) <> 0 AND - NVL(J.RO21NT, 0) - (NVL(J.RO21T, 0) + NVL(S.RO21T, 0)) = 0 THEN - NVL(J.RO21NB, 0) - (NVL(J.RO21B, 0) + NVL(S.RO21B, 0)) - ELSE - 0 - END), - J.RO21T = J.RO21T + S.RO21T, - J.RO11B = J.RO11B + NVL(S.RO11B, 0) + (CASE - WHEN NVL(S.RO11B, 0) <> 0 AND NVL(J.RO11NT, 0) <> 0 AND - NVL(J.RO11NT, 0) - (NVL(J.RO11T, 0) + NVL(S.RO11T, 0)) = 0 THEN - NVL(J.RO11NB, 0) - (NVL(J.RO11B, 0) + NVL(S.RO11B, 0)) - ELSE - 0 - END), - J.RO11T = J.RO11T + S.RO11T, - J.RO24B = J.RO24B + NVL(S.RO24B, 0) + (CASE - WHEN NVL(S.RO24B, 0) <> 0 AND NVL(J.RO24NT, 0) <> 0 AND - NVL(J.RO24NT, 0) - (NVL(J.RO24T, 0) + NVL(S.RO24T, 0)) = 0 THEN - NVL(J.RO24NB, 0) - (NVL(J.RO24B, 0) + NVL(S.RO24B, 0)) - ELSE - 0 - END), - J.RO24T = J.RO24T + S.RO24T, - J.RO20B = J.RO20B + NVL(S.RO20B, 0) + (CASE - WHEN NVL(S.RO20B, 0) <> 0 AND NVL(J.RO20NT, 0) <> 0 AND - NVL(J.RO20NT, 0) - (NVL(J.RO20T, 0) + NVL(S.RO20T, 0)) = 0 THEN - NVL(J.RO20NB, 0) - (NVL(J.RO20B, 0) + NVL(S.RO20B, 0)) - ELSE - 0 - END), - J.RO20T = J.RO20T + S.RO20T, - J.RO19BCB = J.RO19BCB + NVL(S.RO19BCB, 0) + (CASE - WHEN NVL(S.RO19BCB, 0) <> 0 AND NVL(J.RO19NT, 0) <> 0 AND - NVL(S.RO19BVB, 0) = 0 AND NVL(S.RO19BFB, 0) = 0 AND - NVL(J.RO19NT, 0) - (NVL(J.RO19BCT, 0) + NVL(S.RO19BCT, 0)) = 0 THEN - NVL(J.RO19NB, 0) - (NVL(J.RO19BCB, 0) + NVL(S.RO19BCB, 0)) - ELSE - 0 - END), - J.RO19BCT = J.RO19BCT + S.RO19BCT, - J.RO19BVB = J.RO19BVB + NVL(S.RO19BVB, 0) + (CASE - WHEN NVL(S.RO19BVB, 0) <> 0 AND NVL(J.RO19NT, 0) <> 0 AND - NVL(S.RO19BFB, 0) = 0 AND - NVL(J.RO19NT, 0) - (NVL(J.RO19BVT, 0) + NVL(S.RO19BVT, 0)) = 0 THEN - NVL(J.RO19NB, 0) - (NVL(J.RO19BVB, 0) + NVL(S.RO19BVB, 0)) - ELSE - 0 - END), - J.RO19BVT = J.RO19BVT + S.RO19BVT, - J.RO19BFB = J.RO19BFB + NVL(S.RO19BFB, 0) + (CASE - WHEN NVL(S.RO19BFB, 0) <> 0 AND NVL(J.RO19NT, 0) <> 0 AND - NVL(J.RO19NT, 0) - (NVL(J.RO19BFT, 0) + NVL(S.RO19BFT, 0)) = 0 THEN - NVL(J.RO19NB, 0) - (NVL(J.RO19BFB, 0) + NVL(S.RO19BFB, 0)) - ELSE - 0 - END), - J.RO19BFT = J.RO19BFT + S.RO19BFT, - J.RO09BCB = J.RO09BCB + NVL(S.RO09BCB, 0) + (CASE - WHEN NVL(S.RO09BCB, 0) <> 0 AND NVL(J.RO9NT, 0) <> 0 AND - NVL(S.RO09BVB, 0) = 0 AND NVL(S.RO09BFB, 0) = 0 AND - NVL(J.RO9NT, 0) - (NVL(J.RO09BCT, 0) + NVL(S.RO09BCT, 0)) = 0 THEN - NVL(J.RO9NB, 0) - (NVL(J.RO09BCB, 0) + NVL(S.RO09BCB, 0)) - ELSE - 0 - END), - J.RO09BCT = J.RO09BCT + S.RO09BCT, - J.RO09BVB = J.RO09BVB + NVL(S.RO09BVB, 0) + (CASE - WHEN NVL(S.RO09BVB, 0) <> 0 AND NVL(J.RO9NT, 0) <> 0 AND - NVL(S.RO09BFB, 0) = 0 AND - NVL(J.RO9NT, 0) - (NVL(J.RO09BVT, 0) + NVL(S.RO09BVT, 0)) = 0 THEN - NVL(J.RO9NB, 0) - (NVL(J.RO09BVB, 0) + NVL(S.RO09BVB, 0)) - ELSE - 0 - END), - J.RO09BVT = J.RO09BVT + S.RO09BVT, - J.RO09BFB = J.RO09BFB + NVL(S.RO09BFB, 0) + (CASE - WHEN NVL(S.RO09BFB, 0) <> 0 AND NVL(J.RO9NT, 0) <> 0 AND - NVL(J.RO9NT, 0) - (NVL(J.RO09BFT, 0) + NVL(S.RO09BFT, 0)) = 0 THEN - NVL(J.RO9NB, 0) - (NVL(J.RO09BFB, 0) + NVL(S.RO09BFB, 0)) - ELSE - 0 - END), - J.RO09BFT = J.RO09BFT + S.RO09BFT, - J.RO05B = J.RO05B + NVL(S.RO05B, 0) + (CASE - WHEN NVL(S.RO05B, 0) <> 0 AND NVL(J.RO5NB, 0) <> 0 AND - NVL(J.RO5NT, 0) - (NVL(J.RO05T, 0) + NVL(S.RO05T, 0)) = 0 THEN - NVL(J.RO5NB, 0) - (NVL(J.RO05B, 0) + NVL(S.RO05B, 0)) - ELSE - 0 - END), - J.RO05T = J.RO05T + S.RO05T, - J.RO21NB = J.RO21NB + S.RO21NB, - J.RO21NT = J.RO21NT + S.RO21NT, - J.RO11NB = J.RO11NB + S.RO11NB, - J.RO11NT = J.RO11NT + S.RO11NT, - J.RO24NB = J.RO24NB + S.RO24NB, - J.RO24NT = J.RO24NT + S.RO24NT, - J.RO19NB = J.RO19NB + S.RO19NB, - J.RO19NT = J.RO19NT + S.RO19NT, - J.RO20NB = J.RO20NB + S.RO20NB, - J.RO20NT = J.RO20NT + S.RO20NT, - J.RO9NB = J.RO9NB + S.RO9NB, - J.RO9NT = J.RO9NT + S.RO9NT, - J.RO5NB = J.RO5NB + S.RO5NB, - J.RO5NT = J.RO5NT + S.RO5NT, - J.ROSCN = J.ROSCN + S.ROSCN, - J.FO21B = J.FO21B + S.FO21B, - J.FO21T = J.FO21T + S.FO21T, - J.FO24B = J.FO24B + S.FO24B, - J.FO24T = J.FO24T + S.FO24T, - J.FO20B = J.FO20B + S.FO20B, - J.FO20T = J.FO20T + S.FO20T, - J.FO19BCB = J.FO19BCB + S.FO19BCB, - J.FO19BCT = J.FO19BCT + S.FO19BCT, - J.FO19BVB = J.FO19BVB + S.FO19BVB, - J.FO19BVT = J.FO19BVT + S.FO19BVT, - J.FO19BFB = J.FO19BFB + S.FO19BFB, - J.FO19BFT = J.FO19BFT + S.FO19BFT, - J.XX21TIB = J.XX21TIB + S.XX21TIB, - J.XX21TIT = J.XX21TIT + S.XX21TIT, - J.XX11TIB = J.XX11TIB + S.XX11TIB, - J.XX11TIT = J.XX11TIT + S.XX11TIT, - J.XX19TIB = J.XX19TIB + S.XX19TIB, - J.XX19TIT = J.XX19TIT + S.XX19TIT, - J.XX9TIB = J.XX9TIB + S.XX9TIB, - J.XX9TIT = J.XX9TIT + S.XX9TIT, - J.FO09BCB = J.FO09BCB + S.FO09BCB, - J.FO09BCT = J.FO09BCT + S.FO09BCT, - J.FO09BVB = J.FO09BVB + S.FO09BVB, - J.FO09BVT = J.FO09BVT + S.FO09BVT, - J.FO09BFB = J.FO09BFB + S.FO09BFB, - J.FO09BFT = J.FO09BFT + S.FO09BFT, - J.FOSCN = J.FOSCN + S.FOSCN, - J.CE24B = J.CE24B + S.CE24B, - J.CE24T = J.CE24T + S.CE24T, - J.CE20B = J.CE20B + S.CE20B, - J.CE20T = J.CE20T + S.CE20T, - J.CE5SB = J.CE5SB + S.CE5SB, - J.CE5ST = J.CE5ST + S.CE5ST, - J.CE9SB = J.CE9SB + S.CE9SB, - J.CE9ST = J.CE9ST + S.CE9ST, - J.CE21SB = J.CE21SB + S.CE21SB, - J.CE21ST = J.CE21ST + S.CE21ST, - J.CE24SB = J.CE24SB + S.CE24SB, - J.CE24ST = J.CE24ST + S.CE24ST, - J.CE20SB = J.CE20SB + S.CE20SB, - J.CE20ST = J.CE20ST + S.CE20ST, - J.CE19SB = J.CE19SB + S.CE19SB, - J.CE19ST = J.CE19ST + S.CE19ST, - J.CEBCB = J.CEBCB + S.CEBCB, - J.CEBCT = J.CEBCT + S.CEBCT, - J.CEBVB = J.CEBVB + S.CEBVB, - J.CEBVT = J.CEBVT + S.CEBVT, - J.CEBVSC = J.CEBVSC + S.CEBVSC, - J.CEBVN = J.CEBVN + S.CEBVN, - J.CEBFB = J.CEBFB + S.CEBFB, - J.CEBFT = J.CEBFT + S.CEBFT, - J.CEBFSC = J.CEBFSC + S.CEBFSC, - J.CEBFN = J.CEBFN + S.CEBFN, - J.CE21CTB = J.CE21CTB + S.CE21CTB, - J.CE21CTT = J.CE21CTT + S.CE21CTT, - J.CE11CTB = J.CE11CTB + S.CE11CTB, - J.CE11CTT = J.CE11CTT + S.CE11CTT, - J.CE19CTB = J.CE19CTB + S.CE19CTB, - J.CE19CTT = J.CE19CTT + S.CE19CTT, - J.CE9CTB = J.CE9CTB + S.CE9CTB, - J.CE9CTT = J.CE9CTT + S.CE9CTT, - J.CE5CTB = J.CE5CTB + S.CE5CTB, - J.CE5CTT = J.CE5CTT + S.CE5CTT, - J.CE21FTB = J.CE21FTB + S.CE21FTB, - J.CE21FTT = J.CE21FTT + S.CE21FTT, - J.CE11FTB = J.CE11FTB + S.CE11FTB, - J.CE11FTT = J.CE11FTT + S.CE11FTT, - J.CE19FTB = J.CE19FTB + S.CE19FTB, - J.CE19FTT = J.CE19FTT + S.CE19FTT, - J.CE9FTB = J.CE9FTB + S.CE9FTB, - J.CE9FTT = J.CE9FTT + S.CE9FTT, - J.CE5FTB = J.CE5FTB + S.CE5FTB, - J.CE5FTT = J.CE5FTT + S.CE5FTT, - J.TI21B = J.TI21B + S.TI21B, - J.TI21T = J.TI21T + S.TI21T, - J.TI11B = J.TI11B + S.TI11B, - J.TI11T = J.TI11T + S.TI11T, - J.TI24B = J.TI24B + S.TI24B, - J.TI24T = J.TI24T + S.TI24T, - J.TI20B = J.TI20B + S.TI20B, - J.TI20T = J.TI20T + S.TI20T, - J.TI19BCB = J.TI19BCB + S.TI19BCB, - J.TI19BCT = J.TI19BCT + S.TI19BCT, - J.TI19BVB = J.TI19BVB + S.TI19BVB, - J.TI19BVT = J.TI19BVT + S.TI19BVT, - J.TI19BFB = J.TI19BFB + S.TI19BFB, - J.TI19BFT = J.TI19BFT + S.TI19BFT, - J.TI09BVB = J.TI09BVB + S.TI09BVB, - J.TI09BVT = J.TI09BVT + S.TI09BVT, - J.TI09BFB = J.TI09BFB + S.TI09BFB, - J.TI09BFT = J.TI09BFT + S.TI09BFT, - J.ROTN = J.ROTN + S.ROTN, - J.ROTN50 = J.ROTN50 + S.ROTN50, - J.ROTN100 = J.ROTN100 + S.ROTN100, - J.RORTD21 = J.RORTD21 + S.RORTD21, - J.RORTD11 = J.RORTD11 + S.RORTD11, - J.RORTD24 = J.RORTD24 + S.RORTD24, - J.RORTD20 = J.RORTD20 + S.RORTD20, - J.RORTD19 = J.RORTD19 + S.RORTD19, - J.RORTD9 = J.RORTD9 + S.RORTD9, - J.RORTD5 = J.RORTD5 + S.RORTD5 - WHERE J.AN = S.AN AND J.LUNA = S.LUNA AND J.ID_FACT = S.ID_FACT AND NVL(J.ID_SUCURSALA, -99) = NVL(S.ID_SUCURSALA, -99); - - l_updated := SQL%ROWCOUNT; - - -- DELETE if tnScrie = nStergere and all values became 0 after UPDATE - -- (original DELETE WHERE clause from MERGE) - IF tnScrie = pack_contafin.nStergere AND l_updated > 0 THEN - DELETE FROM JC2007 J - WHERE J.AN = S.AN AND J.LUNA = S.LUNA AND J.ID_FACT = S.ID_FACT - AND NVL(J.ID_SUCURSALA, -99) = NVL(S.ID_SUCURSALA, -99) - AND J.TOTCTVA = 0 AND J.TOTFTVATAX = 0 AND J.TOTTVATAX = 0 AND J.TOTNETAX = 0 - AND J.RO24B = 0 AND J.RO24T = 0 AND J.RO20B = 0 AND J.RO20T = 0 - AND J.RO21B = 0 AND J.RO21T = 0 AND J.RO11B = 0 AND J.RO11T = 0 - AND J.RO19BCB = 0 AND J.RO19BCT = 0 AND J.RO19BVB = 0 AND J.RO19BVT = 0 - AND J.RO19BFB = 0 AND J.RO19BFT = 0 AND J.RO09BCB = 0 AND J.RO09BCT = 0 - AND J.RO09BVB = 0 AND J.RO09BVT = 0 AND J.RO09BFB = 0 AND J.RO09BFT = 0 - AND J.RO05B = 0 AND J.RO05T = 0 AND J.RO21NB = 0 AND J.RO21NT = 0 - AND J.RO11NB = 0 AND J.RO11NT = 0 AND J.RO24NB = 0 AND J.RO24NT = 0 - AND J.RO20NB = 0 AND J.RO20NT = 0 AND J.RO19NB = 0 AND J.RO19NT = 0 - AND J.RO9NB = 0 AND J.RO9NT = 0 AND J.RO5NB = 0 AND J.RO5NT = 0 - AND J.ROSCN = 0 AND J.FO21B = 0 AND J.FO21T = 0 AND J.FO24B = 0 - AND J.FO24T = 0 AND J.FO20B = 0 AND J.FO20T = 0 AND J.FO19BCB = 0 - AND J.FO19BCT = 0 AND J.FO19BVB = 0 AND J.FO19BVT = 0 AND J.FO19BFB = 0 - AND J.FO19BFT = 0 AND J.XX21TIB = 0 AND J.XX21TIT = 0 AND J.XX11TIB = 0 - AND J.XX11TIT = 0 AND J.XX19TIB = 0 AND J.XX19TIT = 0 AND J.XX9TIB = 0 - AND J.XX9TIT = 0 AND J.FO09BCB = 0 AND J.FO09BCT = 0 AND J.FO09BVB = 0 - AND J.FO09BVT = 0 AND J.FO09BFB = 0 AND J.FO09BFT = 0 AND J.FOSCN = 0 - AND J.CE24B = 0 AND J.CE24T = 0 AND J.CE20B = 0 AND J.CE20T = 0 - AND J.CE5SB = 0 AND J.CE5ST = 0 AND J.CE9SB = 0 AND J.CE9ST = 0 - AND J.CE21SB = 0 AND J.CE21ST = 0 AND J.CE24SB = 0 AND J.CE24ST = 0 - AND J.CE20SB = 0 AND J.CE20ST = 0 AND J.CE19SB = 0 AND J.CE19ST = 0 - AND J.CEBCB = 0 AND J.CEBCT = 0 AND J.CEBVB = 0 AND J.CEBVT = 0 - AND J.CEBVSC = 0 AND J.CEBVN = 0 AND J.CEBFB = 0 AND J.CEBFT = 0 - AND J.CEBFSC = 0 AND J.CEBFN = 0 AND J.CE21CTB = 0 AND J.CE21CTT = 0 - AND J.CE11CTB = 0 AND J.CE11CTT = 0 AND J.CE19CTB = 0 AND J.CE19CTT = 0 - AND J.CE9CTB = 0 AND J.CE9CTT = 0 AND J.CE5CTB = 0 AND J.CE5CTT = 0 - AND J.CE21FTB = 0 AND J.CE21FTT = 0 AND J.CE11FTB = 0 AND J.CE11FTT = 0 - AND J.CE19FTB = 0 AND J.CE19FTT = 0 AND J.CE9FTB = 0 AND J.CE9FTT = 0 - AND J.CE5FTB = 0 AND J.CE5FTT = 0 AND J.TI21B = 0 AND J.TI21T = 0 - AND J.TI11B = 0 AND J.TI11T = 0 AND J.TI24B = 0 AND J.TI24T = 0 - AND J.TI20B = 0 AND J.TI20T = 0 AND J.TI19BCB = 0 AND J.TI19BCT = 0 - AND J.TI19BVB = 0 AND J.TI19BVT = 0 AND J.TI19BFB = 0 AND J.TI19BFT = 0 - AND J.TI09BVB = 0 AND J.TI09BVT = 0 AND J.TI09BFB = 0 AND J.TI09BFT = 0 - AND J.ROTN = 0 AND J.ROTN50 = 0 AND J.ROTN100 = 0; - END IF; - - -- If no row was updated, INSERT (WHEN NOT MATCHED equivalent) - IF l_updated = 0 THEN - INSERT INTO JC2007 (AN, LUNA, ID_FACT, NRACT, SERIE_ACT, ID_FDOC, DATAACT, DATAIREG, ID_PART, COD, TOTCTVA, TOTFTVATAX, TOTTVATAX, TOTNETAX, RO21B, RO21T, RO11B, RO11T, RO24B, RO24T, RO20B, RO20T, RO19BCB, RO19BCT, RO19BVB, RO19BVT, RO19BFB, RO19BFT, RO09BCB, RO09BCT, RO09BVB, RO09BVT, RO09BFB, RO09BFT, RO05B, RO05T, RO21NB, RO21NT, RO11NB, RO11NT, RO24NB, RO24NT, RO20NB, RO20NT, RO19NB, RO19NT, RO9NB, RO9NT, RO5NB, RO5NT, ROSCN, FO21B, FO21T, FO24B, FO24T, FO20B, FO20T, FO19BCB, FO19BCT, FO19BVB, FO19BVT, FO19BFB, FO19BFT, XX21TIB, XX21TIT, XX11TIB, XX11TIT, XX19TIB, XX19TIT, XX9TIB, XX9TIT, FO09BCB, FO09BCT, FO09BVB, FO09BVT, FO09BFB, FO09BFT, FOSCN, CE24B, CE24T, CE20B, CE20T, CE5SB, CE5ST, CE9SB, CE9ST, CE21SB, CE21ST, CE24SB, CE24ST, CE20SB, CE20ST, CE19SB, CE19ST, CEBCB, CEBCT, CEBVB, CEBVT, CEBVSC, CEBVN, CEBFB, CEBFT, CEBFSC, CEBFN, CE21CTB, CE21CTT, CE11CTB, CE11CTT, CE19CTB, CE19CTT, CE9CTB, CE9CTT, CE5CTB, CE5CTT, CE21FTB, CE21FTT, CE11FTB, CE11FTT, CE19FTB, CE19FTT, CE9FTB, CE9FTT, CE5FTB, CE5FTT, TI21B, TI21T, TI11B, TI11T, TI24B, TI24T, TI20B, TI20T, TI19BCB, TI19BCT, TI19BVB, TI19BVT, TI19BFB, TI19BFT, TI09BVB, TI09BVT, TI09BFB, TI09BFT, ROTN, ROTN50, ROTN100, RORTD21, RORTD11, RORTD24, RORTD20, RORTD19, RORTD9, RORTD5, ID_SUCURSALA) - VALUES (S.AN, S.LUNA, S.ID_FACT, S.NRACT, S.SERIE_ACT, S.ID_FDOC, S.DATAACT, S.DATAIREG, S.ID_PART, S.COD, S.TOTCTVA, S.TOTFTVATAX, S.TOTTVATAX, S.TOTNETAX, - (CASE - WHEN NVL(S.RO21B, 0) <> 0 AND NVL(S.RO21NT, 0) <> 0 AND - NVL(S.RO21NT, 0) = NVL(S.RO21T, 0) THEN - NVL(S.RO21NB, 0) - ELSE - NVL(S.RO21B, 0) - END), S.RO21T,(CASE - WHEN NVL(S.RO11B, 0) <> 0 AND NVL(S.RO11NT, 0) <> 0 AND - NVL(S.RO11NT, 0) = NVL(S.RO11T, 0) THEN - NVL(S.RO11NB, 0) - ELSE - NVL(S.RO11B, 0) - END), S.RO11T, (CASE - WHEN NVL(S.RO24B, 0) <> 0 AND NVL(S.RO24NT, 0) <> 0 AND - NVL(S.RO24NT, 0) = NVL(S.RO24T, 0) THEN - NVL(S.RO24NB, 0) - ELSE - NVL(S.RO24B, 0) - END), S.RO24T,(CASE - WHEN NVL(S.RO20B, 0) <> 0 AND NVL(S.RO20NT, 0) <> 0 AND - NVL(S.RO20NT, 0) = NVL(S.RO20T, 0) THEN - NVL(S.RO20NB, 0) - ELSE - NVL(S.RO20B, 0) - END), S.RO20T,(CASE - WHEN NVL(S.RO19BCB, 0) <> 0 AND NVL(S.RO19BVB, 0) = 0 AND - NVL(S.RO19BFB, 0) = 0 AND NVL(S.RO19NT, 0) <> 0 AND - NVL(S.RO19NT, 0) = NVL(S.RO19BCT, 0) THEN - NVL(S.RO19NB, 0) - ELSE - NVL(S.RO19BCB, 0) - END), S.RO19BCT,(CASE - WHEN NVL(S.RO19BVB, 0) <> 0 AND NVL(S.RO19BFB, 0) = 0 AND - NVL(S.RO19NT, 0) <> 0 AND NVL(S.RO19NT, 0) = NVL(S.RO19BVT, 0) THEN - NVL(S.RO19NB, 0) - ELSE - NVL(S.RO19BVB, 0) - END), S.RO19BVT,(CASE - WHEN NVL(S.RO19BFB, 0) <> 0 AND NVL(S.RO19NT, 0) <> 0 AND - NVL(S.RO19NT, 0) = NVL(S.RO19BFT, 0) THEN - NVL(S.RO19NB, 0) - ELSE - NVL(S.RO19BFB, 0) - END), S.RO19BFT,(CASE - WHEN NVL(S.RO09BCB, 0) <> 0 AND NVL(S.RO09BVB, 0) = 0 AND - NVL(S.RO09BFB, 0) = 0 AND NVL(S.RO9NT, 0) <> 0 AND - NVL(S.RO9NT, 0) = NVL(S.RO09BCT, 0) THEN - NVL(S.RO9NB, 0) - ELSE - NVL(S.RO09BCB, 0) - END), S.RO09BCT,(CASE - WHEN NVL(S.RO09BVB, 0) <> 0 AND NVL(S.RO09BFB, 0) = 0 AND - NVL(S.RO9NT, 0) <> 0 AND NVL(S.RO9NT, 0) = NVL(S.RO09BVT, 0) THEN - NVL(S.RO9NB, 0) - ELSE - NVL(S.RO09BVB, 0) - END), S.RO09BVT,(CASE - WHEN NVL(S.RO09BFB, 0) <> 0 AND NVL(S.RO9NT, 0) <> 0 AND - NVL(S.RO9NT, 0) = NVL(S.RO09BFT, 0) THEN - NVL(S.RO9NB, 0) - ELSE - NVL(S.RO09BFB, 0) - END), S.RO09BFT,(CASE - WHEN NVL(S.RO05B, 0) <> 0 AND NVL(S.RO5NT, 0) <> 0 AND - NVL(S.RO5NT, 0) = NVL(S.RO05T, 0) THEN - NVL(S.RO5NB, 0) - ELSE - NVL(S.RO05B, 0) - END), S.RO05T, S.RO21NB, S.RO21NT, S.RO11NB, S.RO11NT, S.RO24NB, S.RO24NT, S.RO20NB, S.RO20NT, S.RO19NB, S.RO19NT, S.RO9NB, S.RO9NT, S.RO5NB, S.RO5NT, S.ROSCN, S.FO21B, S.FO21T, S.FO24B, S.FO24T, S.FO20B, S.FO20T, S.FO19BCB, S.FO19BCT, S.FO19BVB, S.FO19BVT, S.FO19BFB, S.FO19BFT, S.XX21TIB, S.XX21TIT, S.XX11TIB, S.XX11TIT, S.XX19TIB, S.XX19TIT, S.XX9TIB, S.XX9TIT, S.FO09BCB, S.FO09BCT, S.FO09BVB, S.FO09BVT, S.FO09BFB, S.FO09BFT, S.FOSCN, S.CE24B, S.CE24T, S.CE20B, S.CE20T, S.CE5SB, S.CE5ST, S.CE9SB, S.CE9ST, S.CE21SB, S.CE21ST, S.CE24SB, S.CE24ST, S.CE20SB, S.CE20ST, S.CE19SB, S.CE19ST, S.CEBCB, S.CEBCT, S.CEBVB, S.CEBVT, S.CEBVSC, S.CEBVN, S.CEBFB, S.CEBFT, S.CEBFSC, S.CEBFN, S.CE21CTB, S.CE21CTT, S.CE11CTB, S.CE11CTT, S.CE19CTB, S.CE19CTT, S.CE9CTB, S.CE9CTT, S.CE5CTB, S.CE5CTT, S.CE21FTB, S.CE21FTT, S.CE11FTB, S.CE11FTT, S.CE19FTB, S.CE19FTT, S.CE9FTB, S.CE9FTT, S.CE5FTB, S.CE5FTT, S.TI21B, S.TI21T, S.TI11B, S.TI11T, S.TI24B, S.TI24T, S.TI20B, S.TI20T, S.TI19BCB, S.TI19BCT, S.TI19BVB, S.TI19BVT, S.TI19BFB, S.TI19BFT, S.TI09BVB, S.TI09BVT, S.TI09BFB, S.TI09BFT, S.ROTN, S.ROTN50, S.ROTN100, S.RORTD21, S.RORTD11, S.RORTD24, S.RORTD20, S.RORTD19, S.RORTD9, S.RORTD5, S.ID_SUCURSALA); - END IF; - END; + + -- Exit if no data + IF S.COUNT = 0 THEN + RETURN; + END IF; + + -- BULK UPDATE all rows at once using FORALL + FORALL i IN 1..S.COUNT + UPDATE JC2007 J + SET J.TOTCTVA = J.TOTCTVA + (CASE + WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND + EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN + S(i).TOTCTVA + ELSE + 0 + END), + J.TOTFTVATAX = J.TOTFTVATAX + (CASE + WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND + EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN + S(i).TOTFTVATAX + ELSE + 0 + END), + J.TOTTVATAX = J.TOTTVATAX + (CASE + WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND + EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN + S(i).TOTTVATAX + ELSE + 0 + END), + J.TOTNETAX = J.TOTNETAX + (CASE + WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND + EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN + S(i).TOTNETAX + ELSE + 0 + END), + J.RO21B = J.RO21B + NVL(S(i).RO21B, 0) + (CASE + WHEN NVL(S(i).RO21B, 0) <> 0 AND NVL(J.RO21NT, 0) <> 0 AND + NVL(J.RO21NT, 0) - (NVL(J.RO21T, 0) + NVL(S(i).RO21T, 0)) = 0 THEN + NVL(J.RO21NB, 0) - (NVL(J.RO21B, 0) + NVL(S(i).RO21B, 0)) + ELSE + 0 + END), + J.RO21T = J.RO21T + S(i).RO21T, + J.RO11B = J.RO11B + NVL(S(i).RO11B, 0) + (CASE + WHEN NVL(S(i).RO11B, 0) <> 0 AND NVL(J.RO11NT, 0) <> 0 AND + NVL(J.RO11NT, 0) - (NVL(J.RO11T, 0) + NVL(S(i).RO11T, 0)) = 0 THEN + NVL(J.RO11NB, 0) - (NVL(J.RO11B, 0) + NVL(S(i).RO11B, 0)) + ELSE + 0 + END), + J.RO11T = J.RO11T + S(i).RO11T, + J.RO24B = J.RO24B + NVL(S(i).RO24B, 0) + (CASE + WHEN NVL(S(i).RO24B, 0) <> 0 AND NVL(J.RO24NT, 0) <> 0 AND + NVL(J.RO24NT, 0) - (NVL(J.RO24T, 0) + NVL(S(i).RO24T, 0)) = 0 THEN + NVL(J.RO24NB, 0) - (NVL(J.RO24B, 0) + NVL(S(i).RO24B, 0)) + ELSE + 0 + END), + J.RO24T = J.RO24T + S(i).RO24T, + J.RO20B = J.RO20B + NVL(S(i).RO20B, 0) + (CASE + WHEN NVL(S(i).RO20B, 0) <> 0 AND NVL(J.RO20NT, 0) <> 0 AND + NVL(J.RO20NT, 0) - (NVL(J.RO20T, 0) + NVL(S(i).RO20T, 0)) = 0 THEN + NVL(J.RO20NB, 0) - (NVL(J.RO20B, 0) + NVL(S(i).RO20B, 0)) + ELSE + 0 + END), + J.RO20T = J.RO20T + S(i).RO20T, + J.RO19BCB = J.RO19BCB + NVL(S(i).RO19BCB, 0) + (CASE + WHEN NVL(S(i).RO19BCB, 0) <> 0 AND NVL(J.RO19NT, 0) <> 0 AND + NVL(S(i).RO19BVB, 0) = 0 AND NVL(S(i).RO19BFB, 0) = 0 AND + NVL(J.RO19NT, 0) - (NVL(J.RO19BCT, 0) + NVL(S(i).RO19BCT, 0)) = 0 THEN + NVL(J.RO19NB, 0) - (NVL(J.RO19BCB, 0) + NVL(S(i).RO19BCB, 0)) + ELSE + 0 + END), + J.RO19BCT = J.RO19BCT + S(i).RO19BCT, + J.RO19BVB = J.RO19BVB + NVL(S(i).RO19BVB, 0) + (CASE + WHEN NVL(S(i).RO19BVB, 0) <> 0 AND NVL(J.RO19NT, 0) <> 0 AND + NVL(S(i).RO19BFB, 0) = 0 AND + NVL(J.RO19NT, 0) - (NVL(J.RO19BVT, 0) + NVL(S(i).RO19BVT, 0)) = 0 THEN + NVL(J.RO19NB, 0) - (NVL(J.RO19BVB, 0) + NVL(S(i).RO19BVB, 0)) + ELSE + 0 + END), + J.RO19BVT = J.RO19BVT + S(i).RO19BVT, + J.RO19BFB = J.RO19BFB + NVL(S(i).RO19BFB, 0) + (CASE + WHEN NVL(S(i).RO19BFB, 0) <> 0 AND NVL(J.RO19NT, 0) <> 0 AND + NVL(J.RO19NT, 0) - (NVL(J.RO19BFT, 0) + NVL(S(i).RO19BFT, 0)) = 0 THEN + NVL(J.RO19NB, 0) - (NVL(J.RO19BFB, 0) + NVL(S(i).RO19BFB, 0)) + ELSE + 0 + END), + J.RO19BFT = J.RO19BFT + S(i).RO19BFT, + J.RO09BCB = J.RO09BCB + NVL(S(i).RO09BCB, 0) + (CASE + WHEN NVL(S(i).RO09BCB, 0) <> 0 AND NVL(J.RO9NT, 0) <> 0 AND + NVL(S(i).RO09BVB, 0) = 0 AND NVL(S(i).RO09BFB, 0) = 0 AND + NVL(J.RO9NT, 0) - (NVL(J.RO09BCT, 0) + NVL(S(i).RO09BCT, 0)) = 0 THEN + NVL(J.RO9NB, 0) - (NVL(J.RO09BCB, 0) + NVL(S(i).RO09BCB, 0)) + ELSE + 0 + END), + J.RO09BCT = J.RO09BCT + S(i).RO09BCT, + J.RO09BVB = J.RO09BVB + NVL(S(i).RO09BVB, 0) + (CASE + WHEN NVL(S(i).RO09BVB, 0) <> 0 AND NVL(J.RO9NT, 0) <> 0 AND + NVL(S(i).RO09BFB, 0) = 0 AND + NVL(J.RO9NT, 0) - (NVL(J.RO09BVT, 0) + NVL(S(i).RO09BVT, 0)) = 0 THEN + NVL(J.RO9NB, 0) - (NVL(J.RO09BVB, 0) + NVL(S(i).RO09BVB, 0)) + ELSE + 0 + END), + J.RO09BVT = J.RO09BVT + S(i).RO09BVT, + J.RO09BFB = J.RO09BFB + NVL(S(i).RO09BFB, 0) + (CASE + WHEN NVL(S(i).RO09BFB, 0) <> 0 AND NVL(J.RO9NT, 0) <> 0 AND + NVL(J.RO9NT, 0) - (NVL(J.RO09BFT, 0) + NVL(S(i).RO09BFT, 0)) = 0 THEN + NVL(J.RO9NB, 0) - (NVL(J.RO09BFB, 0) + NVL(S(i).RO09BFB, 0)) + ELSE + 0 + END), + J.RO09BFT = J.RO09BFT + S(i).RO09BFT, + J.RO05B = J.RO05B + NVL(S(i).RO05B, 0) + (CASE + WHEN NVL(S(i).RO05B, 0) <> 0 AND NVL(J.RO5NB, 0) <> 0 AND + NVL(J.RO5NT, 0) - (NVL(J.RO05T, 0) + NVL(S(i).RO05T, 0)) = 0 THEN + NVL(J.RO5NB, 0) - (NVL(J.RO05B, 0) + NVL(S(i).RO05B, 0)) + ELSE + 0 + END), + J.RO05T = J.RO05T + S(i).RO05T, + J.RO21NB = J.RO21NB + S(i).RO21NB, + J.RO21NT = J.RO21NT + S(i).RO21NT, + J.RO11NB = J.RO11NB + S(i).RO11NB, + J.RO11NT = J.RO11NT + S(i).RO11NT, + J.RO24NB = J.RO24NB + S(i).RO24NB, + J.RO24NT = J.RO24NT + S(i).RO24NT, + J.RO19NB = J.RO19NB + S(i).RO19NB, + J.RO19NT = J.RO19NT + S(i).RO19NT, + J.RO20NB = J.RO20NB + S(i).RO20NB, + J.RO20NT = J.RO20NT + S(i).RO20NT, + J.RO9NB = J.RO9NB + S(i).RO9NB, + J.RO9NT = J.RO9NT + S(i).RO9NT, + J.RO5NB = J.RO5NB + S(i).RO5NB, + J.RO5NT = J.RO5NT + S(i).RO5NT, + J.ROSCN = J.ROSCN + S(i).ROSCN, + J.FO21B = J.FO21B + S(i).FO21B, + J.FO21T = J.FO21T + S(i).FO21T, + J.FO24B = J.FO24B + S(i).FO24B, + J.FO24T = J.FO24T + S(i).FO24T, + J.FO20B = J.FO20B + S(i).FO20B, + J.FO20T = J.FO20T + S(i).FO20T, + J.FO19BCB = J.FO19BCB + S(i).FO19BCB, + J.FO19BCT = J.FO19BCT + S(i).FO19BCT, + J.FO19BVB = J.FO19BVB + S(i).FO19BVB, + J.FO19BVT = J.FO19BVT + S(i).FO19BVT, + J.FO19BFB = J.FO19BFB + S(i).FO19BFB, + J.FO19BFT = J.FO19BFT + S(i).FO19BFT, + J.XX21TIB = J.XX21TIB + S(i).XX21TIB, + J.XX21TIT = J.XX21TIT + S(i).XX21TIT, + J.XX11TIB = J.XX11TIB + S(i).XX11TIB, + J.XX11TIT = J.XX11TIT + S(i).XX11TIT, + J.XX19TIB = J.XX19TIB + S(i).XX19TIB, + J.XX19TIT = J.XX19TIT + S(i).XX19TIT, + J.XX9TIB = J.XX9TIB + S(i).XX9TIB, + J.XX9TIT = J.XX9TIT + S(i).XX9TIT, + J.FO09BCB = J.FO09BCB + S(i).FO09BCB, + J.FO09BCT = J.FO09BCT + S(i).FO09BCT, + J.FO09BVB = J.FO09BVB + S(i).FO09BVB, + J.FO09BVT = J.FO09BVT + S(i).FO09BVT, + J.FO09BFB = J.FO09BFB + S(i).FO09BFB, + J.FO09BFT = J.FO09BFT + S(i).FO09BFT, + J.FOSCN = J.FOSCN + S(i).FOSCN, + J.CE24B = J.CE24B + S(i).CE24B, + J.CE24T = J.CE24T + S(i).CE24T, + J.CE20B = J.CE20B + S(i).CE20B, + J.CE20T = J.CE20T + S(i).CE20T, + J.CE5SB = J.CE5SB + S(i).CE5SB, + J.CE5ST = J.CE5ST + S(i).CE5ST, + J.CE9SB = J.CE9SB + S(i).CE9SB, + J.CE9ST = J.CE9ST + S(i).CE9ST, + J.CE21SB = J.CE21SB + S(i).CE21SB, + J.CE21ST = J.CE21ST + S(i).CE21ST, + J.CE24SB = J.CE24SB + S(i).CE24SB, + J.CE24ST = J.CE24ST + S(i).CE24ST, + J.CE20SB = J.CE20SB + S(i).CE20SB, + J.CE20ST = J.CE20ST + S(i).CE20ST, + J.CE19SB = J.CE19SB + S(i).CE19SB, + J.CE19ST = J.CE19ST + S(i).CE19ST, + J.CEBCB = J.CEBCB + S(i).CEBCB, + J.CEBCT = J.CEBCT + S(i).CEBCT, + J.CEBVB = J.CEBVB + S(i).CEBVB, + J.CEBVT = J.CEBVT + S(i).CEBVT, + J.CEBVSC = J.CEBVSC + S(i).CEBVSC, + J.CEBVN = J.CEBVN + S(i).CEBVN, + J.CEBFB = J.CEBFB + S(i).CEBFB, + J.CEBFT = J.CEBFT + S(i).CEBFT, + J.CEBFSC = J.CEBFSC + S(i).CEBFSC, + J.CEBFN = J.CEBFN + S(i).CEBFN, + J.CE21CTB = J.CE21CTB + S(i).CE21CTB, + J.CE21CTT = J.CE21CTT + S(i).CE21CTT, + J.CE11CTB = J.CE11CTB + S(i).CE11CTB, + J.CE11CTT = J.CE11CTT + S(i).CE11CTT, + J.CE19CTB = J.CE19CTB + S(i).CE19CTB, + J.CE19CTT = J.CE19CTT + S(i).CE19CTT, + J.CE9CTB = J.CE9CTB + S(i).CE9CTB, + J.CE9CTT = J.CE9CTT + S(i).CE9CTT, + J.CE5CTB = J.CE5CTB + S(i).CE5CTB, + J.CE5CTT = J.CE5CTT + S(i).CE5CTT, + J.CE21FTB = J.CE21FTB + S(i).CE21FTB, + J.CE21FTT = J.CE21FTT + S(i).CE21FTT, + J.CE11FTB = J.CE11FTB + S(i).CE11FTB, + J.CE11FTT = J.CE11FTT + S(i).CE11FTT, + J.CE19FTB = J.CE19FTB + S(i).CE19FTB, + J.CE19FTT = J.CE19FTT + S(i).CE19FTT, + J.CE9FTB = J.CE9FTB + S(i).CE9FTB, + J.CE9FTT = J.CE9FTT + S(i).CE9FTT, + J.CE5FTB = J.CE5FTB + S(i).CE5FTB, + J.CE5FTT = J.CE5FTT + S(i).CE5FTT, + J.TI21B = J.TI21B + S(i).TI21B, + J.TI21T = J.TI21T + S(i).TI21T, + J.TI11B = J.TI11B + S(i).TI11B, + J.TI11T = J.TI11T + S(i).TI11T, + J.TI24B = J.TI24B + S(i).TI24B, + J.TI24T = J.TI24T + S(i).TI24T, + J.TI20B = J.TI20B + S(i).TI20B, + J.TI20T = J.TI20T + S(i).TI20T, + J.TI19BCB = J.TI19BCB + S(i).TI19BCB, + J.TI19BCT = J.TI19BCT + S(i).TI19BCT, + J.TI19BVB = J.TI19BVB + S(i).TI19BVB, + J.TI19BVT = J.TI19BVT + S(i).TI19BVT, + J.TI19BFB = J.TI19BFB + S(i).TI19BFB, + J.TI19BFT = J.TI19BFT + S(i).TI19BFT, + J.TI09BVB = J.TI09BVB + S(i).TI09BVB, + J.TI09BVT = J.TI09BVT + S(i).TI09BVT, + J.TI09BFB = J.TI09BFB + S(i).TI09BFB, + J.TI09BFT = J.TI09BFT + S(i).TI09BFT, + J.ROTN = J.ROTN + S(i).ROTN, + J.ROTN50 = J.ROTN50 + S(i).ROTN50, + J.ROTN100 = J.ROTN100 + S(i).ROTN100, + J.RORTD21 = J.RORTD21 + S(i).RORTD21, + J.RORTD11 = J.RORTD11 + S(i).RORTD11, + J.RORTD24 = J.RORTD24 + S(i).RORTD24, + J.RORTD20 = J.RORTD20 + S(i).RORTD20, + J.RORTD19 = J.RORTD19 + S(i).RORTD19, + J.RORTD9 = J.RORTD9 + S(i).RORTD9, + J.RORTD5 = J.RORTD5 + S(i).RORTD5 + WHERE J.AN = S(i).AN + AND J.LUNA = S(i).LUNA + 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 + -- No row was updated -> need to INSERT + SI.EXTEND; + SI(SI.COUNT) := S(i); + ELSIF tnScrie = pack_contafin.nStergere THEN + -- Row was updated and it's a deletion operation -> candidate for DELETE + SD.EXTEND; + SD(SD.COUNT) := S(i); + END IF; END LOOP; + + -- BULK INSERT for new rows + IF SI.COUNT > 0 THEN + FORALL i IN 1..SI.COUNT + INSERT INTO JC2007 (AN, LUNA, ID_FACT, NRACT, SERIE_ACT, ID_FDOC, DATAACT, DATAIREG, ID_PART, COD, + TOTCTVA, TOTFTVATAX, TOTTVATAX, TOTNETAX, + RO21B, RO21T, RO11B, RO11T, RO24B, RO24T, RO20B, RO20T, + RO19BCB, RO19BCT, RO19BVB, RO19BVT, RO19BFB, RO19BFT, + RO09BCB, RO09BCT, RO09BVB, RO09BVT, RO09BFB, RO09BFT, + RO05B, RO05T, + RO21NB, RO21NT, RO11NB, RO11NT, RO24NB, RO24NT, RO20NB, RO20NT, + RO19NB, RO19NT, RO9NB, RO9NT, RO5NB, RO5NT, ROSCN, + FO21B, FO21T, FO24B, FO24T, FO20B, FO20T, + FO19BCB, FO19BCT, FO19BVB, FO19BVT, FO19BFB, FO19BFT, + XX21TIB, XX21TIT, XX11TIB, XX11TIT, XX19TIB, XX19TIT, XX9TIB, XX9TIT, + FO09BCB, FO09BCT, FO09BVB, FO09BVT, FO09BFB, FO09BFT, FOSCN, + CE24B, CE24T, CE20B, CE20T, CE5SB, CE5ST, CE9SB, CE9ST, + CE21SB, CE21ST, CE24SB, CE24ST, CE20SB, CE20ST, CE19SB, CE19ST, + CEBCB, CEBCT, CEBVB, CEBVT, CEBVSC, CEBVN, CEBFB, CEBFT, CEBFSC, CEBFN, + CE21CTB, CE21CTT, CE11CTB, CE11CTT, CE19CTB, CE19CTT, CE9CTB, CE9CTT, CE5CTB, CE5CTT, + CE21FTB, CE21FTT, CE11FTB, CE11FTT, CE19FTB, CE19FTT, CE9FTB, CE9FTT, CE5FTB, CE5FTT, + TI21B, TI21T, TI11B, TI11T, TI24B, TI24T, TI20B, TI20T, + TI19BCB, TI19BCT, TI19BVB, TI19BVT, TI19BFB, TI19BFT, + TI09BVB, TI09BVT, TI09BFB, TI09BFT, + ROTN, ROTN50, ROTN100, + RORTD21, RORTD11, RORTD24, RORTD20, RORTD19, RORTD9, RORTD5, + ID_SUCURSALA) + VALUES ( + SI(i).AN, + SI(i).LUNA, + SI(i).ID_FACT, + SI(i).NRACT, + SI(i).SERIE_ACT, + SI(i).ID_FDOC, + SI(i).DATAACT, + SI(i).DATAIREG, + SI(i).ID_PART, + SI(i).COD, + SI(i).TOTCTVA, + SI(i).TOTFTVATAX, + SI(i).TOTTVATAX, + SI(i).TOTNETAX, + (CASE + WHEN NVL(SI(i).RO21B, 0) <> 0 AND + NVL(SI(i).RO21NT, 0) <> 0 AND + NVL(SI(i).RO21NT, 0) = NVL(SI(i).RO21T, 0) THEN + NVL(SI(i).RO21NB, 0) + ELSE + NVL(SI(i).RO21B, 0) + END), + SI(i).RO21T, + (CASE + WHEN NVL(SI(i).RO11B, 0) <> 0 AND + NVL(SI(i).RO11NT, 0) <> 0 AND + NVL(SI(i).RO11NT, 0) = NVL(SI(i).RO11T, 0) THEN + NVL(SI(i).RO11NB, 0) + ELSE + NVL(SI(i).RO11B, 0) + END), + SI(i).RO11T, + (CASE + WHEN NVL(SI(i).RO24B, 0) <> 0 AND + NVL(SI(i).RO24NT, 0) <> 0 AND + NVL(SI(i).RO24NT, 0) = NVL(SI(i).RO24T, 0) THEN + NVL(SI(i).RO24NB, 0) + ELSE + NVL(SI(i).RO24B, 0) + END), + SI(i).RO24T, + (CASE + WHEN NVL(SI(i).RO20B, 0) <> 0 AND + NVL(SI(i).RO20NT, 0) <> 0 AND + NVL(SI(i).RO20NT, 0) = NVL(SI(i).RO20T, 0) THEN + NVL(SI(i).RO20NB, 0) + ELSE + NVL(SI(i).RO20B, 0) + END), + SI(i).RO20T, + (CASE + WHEN NVL(SI(i).RO19BCB, 0) <> 0 AND + NVL(SI(i).RO19BVB, 0) = 0 AND + NVL(SI(i).RO19BFB, 0) = 0 AND + NVL(SI(i).RO19NT, 0) <> 0 AND + NVL(SI(i).RO19NT, 0) = NVL(SI(i).RO19BCT, 0) THEN + NVL(SI(i).RO19NB, 0) + ELSE + NVL(SI(i).RO19BCB, 0) + END), + SI(i).RO19BCT, + (CASE + WHEN NVL(SI(i).RO19BVB, 0) <> 0 AND + NVL(SI(i).RO19BFB, 0) = 0 AND + NVL(SI(i).RO19NT, 0) <> 0 AND + NVL(SI(i).RO19NT, 0) = NVL(SI(i).RO19BVT, 0) THEN + NVL(SI(i).RO19NB, 0) + ELSE + NVL(SI(i).RO19BVB, 0) + END), + SI(i).RO19BVT, + (CASE + WHEN NVL(SI(i).RO19BFB, 0) <> 0 AND + NVL(SI(i).RO19NT, 0) <> 0 AND + NVL(SI(i).RO19NT, 0) = NVL(SI(i).RO19BFT, 0) THEN + NVL(SI(i).RO19NB, 0) + ELSE + NVL(SI(i).RO19BFB, 0) + END), + SI(i).RO19BFT, + (CASE + WHEN NVL(SI(i).RO09BCB, 0) <> 0 AND + NVL(SI(i).RO09BVB, 0) = 0 AND + NVL(SI(i).RO09BFB, 0) = 0 AND + NVL(SI(i).RO9NT, 0) <> 0 AND + NVL(SI(i).RO9NT, 0) = NVL(SI(i).RO09BCT, 0) THEN + NVL(SI(i).RO9NB, 0) + ELSE + NVL(SI(i).RO09BCB, 0) + END), + SI(i).RO09BCT, + (CASE + WHEN NVL(SI(i).RO09BVB, 0) <> 0 AND + NVL(SI(i).RO09BFB, 0) = 0 AND + NVL(SI(i).RO9NT, 0) <> 0 AND + NVL(SI(i).RO9NT, 0) = NVL(SI(i).RO09BVT, 0) THEN + NVL(SI(i).RO9NB, 0) + ELSE + NVL(SI(i).RO09BVB, 0) + END), + SI(i).RO09BVT, + (CASE + WHEN NVL(SI(i).RO09BFB, 0) <> 0 AND + NVL(SI(i).RO9NT, 0) <> 0 AND + NVL(SI(i).RO9NT, 0) = NVL(SI(i).RO09BFT, 0) THEN + NVL(SI(i).RO9NB, 0) + ELSE + NVL(SI(i).RO09BFB, 0) + END), + SI(i).RO09BFT, + (CASE + WHEN NVL(SI(i).RO05B, 0) <> 0 AND + NVL(SI(i).RO5NT, 0) <> 0 AND + NVL(SI(i).RO5NT, 0) = NVL(SI(i).RO05T, 0) THEN + NVL(SI(i).RO5NB, 0) + ELSE + NVL(SI(i).RO05B, 0) + END), + SI(i).RO05T, + SI(i).RO21NB, + SI(i).RO21NT, + SI(i).RO11NB, + SI(i).RO11NT, + SI(i).RO24NB, + SI(i).RO24NT, + SI(i).RO20NB, + SI(i).RO20NT, + SI(i).RO19NB, + SI(i).RO19NT, + SI(i).RO9NB, + SI(i).RO9NT, + SI(i).RO5NB, + SI(i).RO5NT, + SI(i).ROSCN, + SI(i).FO21B, + SI(i).FO21T, + SI(i).FO24B, + SI(i).FO24T, + SI(i).FO20B, + SI(i).FO20T, + SI(i).FO19BCB, + SI(i).FO19BCT, + SI(i).FO19BVB, + SI(i).FO19BVT, + SI(i).FO19BFB, + SI(i).FO19BFT, + SI(i).XX21TIB, + SI(i).XX21TIT, + SI(i).XX11TIB, + SI(i).XX11TIT, + SI(i).XX19TIB, + SI(i).XX19TIT, + SI(i).XX9TIB, + SI(i).XX9TIT, + SI(i).FO09BCB, + SI(i).FO09BCT, + SI(i).FO09BVB, + SI(i).FO09BVT, + SI(i).FO09BFB, + SI(i).FO09BFT, + SI(i).FOSCN, + SI(i).CE24B, + SI(i).CE24T, + SI(i).CE20B, + SI(i).CE20T, + SI(i).CE5SB, + SI(i).CE5ST, + SI(i).CE9SB, + SI(i).CE9ST, + SI(i).CE21SB, + SI(i).CE21ST, + SI(i).CE24SB, + SI(i).CE24ST, + SI(i).CE20SB, + SI(i).CE20ST, + SI(i).CE19SB, + SI(i).CE19ST, + SI(i).CEBCB, + SI(i).CEBCT, + SI(i).CEBVB, + SI(i).CEBVT, + SI(i).CEBVSC, + SI(i).CEBVN, + SI(i).CEBFB, + SI(i).CEBFT, + SI(i).CEBFSC, + SI(i).CEBFN, + SI(i).CE21CTB, + SI(i).CE21CTT, + SI(i).CE11CTB, + SI(i).CE11CTT, + SI(i).CE19CTB, + SI(i).CE19CTT, + SI(i).CE9CTB, + SI(i).CE9CTT, + SI(i).CE5CTB, + SI(i).CE5CTT, + SI(i).CE21FTB, + SI(i).CE21FTT, + SI(i).CE11FTB, + SI(i).CE11FTT, + SI(i).CE19FTB, + SI(i).CE19FTT, + SI(i).CE9FTB, + SI(i).CE9FTT, + SI(i).CE5FTB, + SI(i).CE5FTT, + SI(i).TI21B, + SI(i).TI21T, + SI(i).TI11B, + SI(i).TI11T, + SI(i).TI24B, + SI(i).TI24T, + SI(i).TI20B, + SI(i).TI20T, + SI(i).TI19BCB, + SI(i).TI19BCT, + SI(i).TI19BVB, + SI(i).TI19BVT, + SI(i).TI19BFB, + SI(i).TI19BFT, + SI(i).TI09BVB, + SI(i).TI09BVT, + SI(i).TI09BFB, + SI(i).TI09BFT, + SI(i).ROTN, + SI(i).ROTN50, + SI(i).ROTN100, + SI(i).RORTD21, + SI(i).RORTD11, + SI(i).RORTD24, + SI(i).RORTD20, + SI(i).RORTD19, + SI(i).RORTD9, + SI(i).RORTD5, + SI(i).ID_SUCURSALA); + END IF; + + -- BULK DELETE for rows where all values became 0 after UPDATE + -- Only executed when tnScrie = nStergere + IF SD.COUNT > 0 AND tnScrie = pack_contafin.nStergere THEN + FORALL i IN 1..SD.COUNT + DELETE FROM JC2007 J + WHERE J.AN = SD(i).AN + AND J.LUNA = SD(i).LUNA + AND J.ID_FACT = SD(i).ID_FACT + AND NVL(J.ID_SUCURSALA, -99) = NVL(SD(i).ID_SUCURSALA, -99) + AND J.TOTCTVA = 0 AND J.TOTFTVATAX = 0 AND J.TOTTVATAX = 0 AND J.TOTNETAX = 0 + AND J.RO24B = 0 AND J.RO24T = 0 AND J.RO20B = 0 AND J.RO20T = 0 + AND J.RO21B = 0 AND J.RO21T = 0 AND J.RO11B = 0 AND J.RO11T = 0 + AND J.RO19BCB = 0 AND J.RO19BCT = 0 AND J.RO19BVB = 0 AND J.RO19BVT = 0 + AND J.RO19BFB = 0 AND J.RO19BFT = 0 AND J.RO09BCB = 0 AND J.RO09BCT = 0 + AND J.RO09BVB = 0 AND J.RO09BVT = 0 AND J.RO09BFB = 0 AND J.RO09BFT = 0 + AND J.RO05B = 0 AND J.RO05T = 0 AND J.RO21NB = 0 AND J.RO21NT = 0 + AND J.RO11NB = 0 AND J.RO11NT = 0 AND J.RO24NB = 0 AND J.RO24NT = 0 + AND J.RO20NB = 0 AND J.RO20NT = 0 AND J.RO19NB = 0 AND J.RO19NT = 0 + AND J.RO9NB = 0 AND J.RO9NT = 0 AND J.RO5NB = 0 AND J.RO5NT = 0 + AND J.ROSCN = 0 AND J.FO21B = 0 AND J.FO21T = 0 AND J.FO24B = 0 + AND J.FO24T = 0 AND J.FO20B = 0 AND J.FO20T = 0 AND J.FO19BCB = 0 + AND J.FO19BCT = 0 AND J.FO19BVB = 0 AND J.FO19BVT = 0 AND J.FO19BFB = 0 + AND J.FO19BFT = 0 AND J.XX21TIB = 0 AND J.XX21TIT = 0 AND J.XX11TIB = 0 + AND J.XX11TIT = 0 AND J.XX19TIB = 0 AND J.XX19TIT = 0 AND J.XX9TIB = 0 + AND J.XX9TIT = 0 AND J.FO09BCB = 0 AND J.FO09BCT = 0 AND J.FO09BVB = 0 + AND J.FO09BVT = 0 AND J.FO09BFB = 0 AND J.FO09BFT = 0 AND J.FOSCN = 0 + AND J.CE24B = 0 AND J.CE24T = 0 AND J.CE20B = 0 AND J.CE20T = 0 + AND J.CE5SB = 0 AND J.CE5ST = 0 AND J.CE9SB = 0 AND J.CE9ST = 0 + AND J.CE21SB = 0 AND J.CE21ST = 0 AND J.CE24SB = 0 AND J.CE24ST = 0 + AND J.CE20SB = 0 AND J.CE20ST = 0 AND J.CE19SB = 0 AND J.CE19ST = 0 + AND J.CEBCB = 0 AND J.CEBCT = 0 AND J.CEBVB = 0 AND J.CEBVT = 0 + AND J.CEBVSC = 0 AND J.CEBVN = 0 AND J.CEBFB = 0 AND J.CEBFT = 0 + AND J.CEBFSC = 0 AND J.CEBFN = 0 AND J.CE21CTB = 0 AND J.CE21CTT = 0 + AND J.CE11CTB = 0 AND J.CE11CTT = 0 AND J.CE19CTB = 0 AND J.CE19CTT = 0 + AND J.CE9CTB = 0 AND J.CE9CTT = 0 AND J.CE5CTB = 0 AND J.CE5CTT = 0 + AND J.CE21FTB = 0 AND J.CE21FTT = 0 AND J.CE11FTB = 0 AND J.CE11FTT = 0 + AND J.CE19FTB = 0 AND J.CE19FTT = 0 AND J.CE9FTB = 0 AND J.CE9FTT = 0 + AND J.CE5FTB = 0 AND J.CE5FTT = 0 AND J.TI21B = 0 AND J.TI21T = 0 + AND J.TI11B = 0 AND J.TI11T = 0 AND J.TI24B = 0 AND J.TI24T = 0 + AND J.TI20B = 0 AND J.TI20T = 0 AND J.TI19BCB = 0 AND J.TI19BCT = 0 + AND J.TI19BVB = 0 AND J.TI19BVT = 0 AND J.TI19BFB = 0 AND J.TI19BFT = 0 + AND J.TI09BVB = 0 AND J.TI09BVT = 0 AND J.TI09BFB = 0 AND J.TI09BFT = 0 + AND J.ROTN = 0 AND J.ROTN50 = 0 AND J.ROTN100 = 0; + END IF; END; <> null; - end SCRIE_JC_2007; \ No newline at end of file + end SCRIE_JC_2007;