Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lucia.Souza

Deletar a última execução de uma tabela

Recommended Posts

Olas

 

Tenho uma tabela que é carregada por uma procedure. No começo dessa procedure tenho uma instrução de delete que apaga os registros do mês anterior e carrega novamente. Mas p/ minha carga isso esta errado.

 

Preciso alterar essa instrução de delete para que se apague a última carga antes do insert.

Tenho um campo Run_ID e seria por esse campo que deve-se deletar.

 

A instrução que tenho hoje é essa: (que apaga o mês anterior antes do insert)

 

DELETE Tabela T1
WHERE T1.ANO = EXTRACT (YEAR FROM TRUNC(ADD_MONTHS(SYSDATE,-1), 'MM'))
AND T1.MES = EXTRACT (MONTH FROM TRUNC(ADD_MONTHS(SYSDATE,-1), 'MM'));

 

 

 

.... Mas preciso apagar a última execução através do campo Run_ID

 

Poderiam me dar um help

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) Não entendi a procedure deve primeiro deletar os registros referentes ao mês anterior do mês corrente ou de uma referência passada por parâmetro.

 

2) Usando Extract não tem este 'MM"

 

Prefiro :

 

TO_CHAR(ADD_MONTHS(SYSDATE,-1), 'YYYY')

TO_CHAR(ADD_MONTHS(SYSDATE,-1), 'MM')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mas este comando que postei eh o que uso hoje e que pra mim não serve.

 

Tenho um campo na tabela que é o Run_ID, do tipo DATE. O que carrega esse campo é um sysdate.

Toda vez que a procedure é executada p/ carregar a tabela, neste campo eh a data do sistema. E seria através desse campo que preciso montar uma instrução de delete que apague a última carga. :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando a tabela é gravada inicialmente run_id recebe o que ?

 

Sysdate

Trunc(Sysdate)

Trunc(Sysdate,'MM')

 

?

 

Não vejo muita complicação, se vai gravar Março/2014, antes basta deletar Fevereiro/2014

 

A questão é o ano/mês a ser gravado é definido pela data corrente ou por uma referência passada por parâmetro ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Run_id recebe um sysdate. (sysdate as run_id).

 

Eu não vou deletar o último mês, vou deletar a última execução. Por exemplo. Carreguei a tabela hoje, então o run_id vai ser a data de hoje. Na semana que vem vou carregar a tabela novamente, então tenho que deletar o run_id c/ a data de hj, e assim por diante....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se a execução grava o Sysdate então para deletar [

delete tabela where run_id < sysdate;

Tudo anterior será deletado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.