CREATE OR REPLACE PROCEDURE INSERT_PARTFILI IS
    V_COUNT NUMBER := 0;
BEGIN
    FOR C_ITENS IN (SELECT PARTFILI.CDFILIAL,    --1 
                           PRODUTO.CDPRODUTO,    --2 
                           PARTFILI.CDTIPPART,   --3 
                           ROWNUM CONTADOR,      --4 
                           PARTFILI.CDMARCA,     --5 
                           PARTFILI.CDFORNECED,  --6 
                           PARTFILI.CDGRUPPROD,  --7 
                           PARTFILI.CDSUBGRPROD, --8 
                           PARTFILI.CDFILISUBGR, --9 
                           PARTFILI.CDFILCOTA,   --10 
                           PARTFILI.NRCOLEPRECO, --11 
                           SYSDATE               --12
                      FROM PARTFILI INNER JOIN PRODUTO ON PARTFILI.CDPRODUTO = PRODUTO.CDPRODESTO
                     WHERE NOT EXISTS (SELECT 1
                                         FROM PARTFILI PF
                                        WHERE PF.CDPRODUTO = PRODUTO.CDPRODUTO
                                          AND PF.CDTIPPART = PARTFILI.CDTIPPART
                                          AND PF.CDFILIAL  = PARTFILI.CDFILIAL))
    LOOP
        BEGIN
            INSERT INTO PARTFILI (CDFILIAL,    --1 
                                  CDPRODUTO,   --2 
                                  CDTIPPART,   --3 
                                  NRSEQPART,   --4
                                  CDMARCA,     --5 
                                  CDFORNECED,  --6 
                                  CDGRUPPROD,  --7 
                                  CDSUBGRPROD, --8
                                  CDFILISUBGR, --9 
                                  CDFILCOTA,   --10 
                                  NRCOLEPRECO, --11 
                                  DTULTATUPFIL --12
                                 )
                          VALUES (C_ITENS.CDFILIAL,    --1 
                                  C_ITENS.CDPRODUTO,   --2 
                                  C_ITENS.CDTIPPART,   --3 
                                  C_ITENS.CONTADOR,    --4 
                                  C_ITENS.CDMARCA,     --5 
                                  C_ITENS.CDFORNECED,  --6 
                                  C_ITENS.CDGRUPPROD,  --7 
                                  C_ITENS.CDSUBGRPROD, --8 
                                  C_ITENS.CDFILISUBGR, --9 
                                  C_ITENS.CDFILCOTA,   --10 
                                  C_ITENS.NRCOLEPRECO, --11 
                                  SYSDATE);            --12
            V_COUNT := V_COUNT + 1;
            IF V_COUNT > 10 THEN
                COMMIT;
                V_COUNT := 0;
            END IF;
        EXCEPTION
            WHEN OTHERS THEN
                NULL; 
        END;            
    END LOOP;
    COMMIT;
END INSERT_PARTFILI;
/