Deletar registros de tabelas particionadas...Alguém posso me ajudar?

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
KATIA DIAS
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qui, 16 Mar 2006 8:48 pm
Localização: são PAULO

Pessoal, possuo dois script´s que executo a cada 30 dias manualmente para limpeza "COD_COMMODITY", sendo um menor que 90 e 120 dias. . Agora vou automatizar e será executada por "SCHEDULER" ... Lembrando que são milhões de registros a ser deletados. Quero desenvolver tudo em uma proceddure, e preciso que seja primeiramente executada a 120 dias e posteriormente 90 dias. Alguém tem alguma idéia que possa me ajudar, como deixar essa procedure dinâmica? Segue exemplo:

--- SCRIPT 1

Selecionar tudo

DECLARE
  CURSOR DEL_PROD IS
                SELECT DISTINCT COD_COMMODITY FROM PRODUTOS P
                  JOIN PRODUTO_PRICE PR
                  ON P.COD_COMMODITY = PR.COD_COMMODITY
                WHERE P.DT_PROCESSO < TRUNC(SYSDATE) - 120;
  BEGIN
                FOR del IN cursor_del_prod LOOP
                     EXECUTE IMMEDIATE 'ALTER TABLE PRODUTOS_PRICE DROP PARTITION FOR (' || del.COD_COMMODITY|| ')' ;	
                END LOOP;
END;


--- SCRIPT 2

Selecionar tudo

DECLARE
  CURSOR DEL_PROD IS
                SELECT DISTINCT COD_COMMODITY FROM PRODUTOS P
                  JOIN PRODUTO_PART PRT
                  ON P.COD_COMMODITY = PRT.COD_COMMODITY
                WHERE P.DT_PROCESSO < TRUNC(SYSDATE) - 90;
  BEGIN
                FOR del_part IN cursor_del_prod LOOP
                    EXECUTE IMMEDIATE 'ALTER TABLE PRODUTO_PART DROP PARTITION FOR (' || del_part.COD_COMMODITY|| ')' ;	
                END LOOP;
END;

Muito obrigada!
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Majestic-12 [Bot] e 5 visitantes