CREATE OR REPLACE PROCEDURE LIMPEZA_TABTEMP_INFLIGHTOR
AS
BEGIN
   /*Limpa LISTA, lista de valores genérica do sistema*/
   DELETE FROM LISTA WHERE DTULTATULIST < TRUNC(SYSDATE - 5);
   /*Limpa LISTAERROS, lista de erros de procedure*/
   DELETE FROM LISTAERROS WHERE DTINCLUSAO < TRUNC(SYSDATE - 5);
   /*Limpa ANALISERECM, temporária auxiliar para a recursividade de receitas*/
   COMMIT;
   DELETE FROM ANALISERECM WHERE DTGERACAO < TRUNC(SYSDATE - 5);
   /*Limpa ANALISERECMPROD, temporária auxiliar para a recursividade de receitas*/
   DELETE FROM ANALISERECMPROD WHERE DTGERACAO < TRUNC(SYSDATE - 5);
   /*Limpa ANALISERECMCUSTO, temporária auxiliar para a recursividade de receitas*/   
   DELETE FROM ANALISERECMCUSTO WHERE DTGERACAO < TRUNC(SYSDATE - 5);
   /*Limpa ERROSIMULAPLAVOO, temporária auxiliar para a simulação de planos de voo*/
   DELETE FROM ERROSIMULAPLAVOO WHERE DTINCLUSAO < TRUNC(SYSDATE - 5);
   /*Limpa COMPARATIVOPLAREALINF, temporária auxiliar para a simulação de planos de voo*/
   DELETE FROM COMPARATIVOPLAREALINF WHERE DTINCLUSAO < TRUNC(SYSDATE - 5);
   COMMIT;
END;
/

DECLARE
  V_JOB_EXISTS NUMBER;
BEGIN
   -- Mantida para apagar jobs no formato anterior
   FOR C_JOBS IN (SELECT JOB
                    FROM ALL_JOBS
                   WHERE WHAT LIKE '%LIMPEZA_TABTEMP_INFLIGHTOR%') LOOP
      DBMS_JOB.REMOVE(C_JOBS.JOB);
   END LOOP;
   
   SELECT COUNT(*) INTO V_JOB_EXISTS
     FROM USER_SCHEDULER_JOBS
    WHERE JOB_NAME = 'JOB_LIMPEZA_TABTEMP_INFLIGHTOR';

   IF V_JOB_EXISTS > 0 THEN
      DBMS_SCHEDULER.DROP_JOB(JOB_NAME => 'JOB_LIMPEZA_TABTEMP_INFLIGHTOR');
   END IF;
   
   DBMS_SCHEDULER.CREATE_JOB (
      job_name => 'JOB_LIMPEZA_TABTEMP_INFLIGHTOR',
      job_type => 'PLSQL_BLOCK',
      job_action => 'BEGIN LIMPEZA_TABTEMP_INFLIGHTOR(); END;',
      repeat_interval => 'FREQ=DAILY;INTERVAL=5;BYHOUR=3;BYMINUTE=45',
      end_date => NULL,
      enabled => TRUE,
      comments => 'Job criado para limpeza de tabelas temporárias do inflightor'
   );
   
   COMMIT;
END; 
/