CREATE OR REPLACE PROCEDURE LIMPA_POSESTCONS(P_CDFILIAL     IN VARCHAR2)
IS
BEGIN
   FOR C_PRODUTO IN(SELECT MIN(DTPOSIESTQ) DTPOSIESTQ, CDPRODUTO, CDFILIAL
                    FROM POSESTDIA P
                    WHERE
                       CDFILIAL = NVL(P_CDFILIAL, CDFILIAL)   AND
                       EXISTS(SELECT CDPRODUTO
                              FROM RELAT_COMPESTCONS
                              WHERE CDFILIAL = NVL(P_CDFILIAL, CDFILIAL)  AND
                                    CDPRODUTO = P.CDPRODUTO)
                    GROUP BY CDPRODUTO, CDFILIAL) LOOP

      DELETE FROM POSESTCONS
      WHERE
         CDFILIAL    = C_PRODUTO.CDFILIAL    AND
         DTPOSESTCON < C_PRODUTO.DTPOSIESTQ  AND
         CDPRODUTO   = C_PRODUTO.CDPRODUTO;

      DELETE FROM RELAT_COMPESTCONS
      WHERE CDFILIAL   = C_PRODUTO.CDFILIAL     AND
            CDPRODUTO  = C_PRODUTO.CDPRODUTO    AND
            DTPOSICAO  < C_PRODUTO.DTPOSIESTQ;
   END LOOP;
END;
/
