Lendo e deletando a mesma tabela

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
cleberz
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 107
Registrado em: Ter, 15 Nov 2011 8:42 am

Boa tarde senhores,

como eu faço para ler e deletar uma mesma tabela commitando a cada 1000? fiz o bloco abaixo mas demora uma eternidade, ta demorando 65 minutos para cada um registro e a tabela tem 358.000 registro. alguém pode me ajudar?

Selecionar tudo

SET SERVEROUTPUT ON
declare 

  cursor c_1 is
  
select CTRT_REF_NR  
FROM TB1
WHERE BLK_CD = 'USA'
AND CTRT_REF_NR NOT IN (select ctrt_ref_nr from tb_ctrt_tmp); 
   
   V_CONT NUMBER := 0;
begin
   for c_1_rec in c_1 loop
          
     DELETE
     FROM TB1
     WHERE BLK_CD = 'USA'
       AND CTRT_REF_NR = C_1_REC.CTRT_REF_NR;

     
     V_CONT := V_CONT + 1;
     IF V_CONT = 1000 THEN
        COMMIT;
        V_CONT := 0;
     END IF;
   
   end loop;
   COMMIT;
   
end;
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Aqui rolou um tópico semelhante ao seu. Veja se ajuda!
http://glufke.net/oracle/viewtopic.php?f=2&t=9196
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes