Ir para conteúdo

POWERED BY:

Arquivado

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

e-junior

Problema com Performace

Recommended Posts

Olá pessoal tudo bom???

 

Bom estou com a sequinte procedure:

 

DECLARE

 

COUNTER NUMBER := 0;

CURSOR c_custo IS

 

SELECT COD, CUSTO FROM tabela1

WHERE TIPO IN ('1');

 

atualiza_custo c_custo%ROWTYPE;

 

BEGIN

OPEN c_custo;

LOOP

FETCH c_custo INTO atualiza_custo;

EXIT WHEN c_custo%NOTFOUND;

 

COUNTER := COUNTER + 1;

 

UPDATE tabela2 SET tabela2.CUSTO = atualiza_custo.CUSTO

WHERE tabela2.DATA = '20071231'

AND tabela2.COD = atualiza_custo.COD;

 

IF COUNTER > 100 THEN

COMMIT;

END IF;

 

END LOOP;

CLOSE c_custo;

END;

COMMIT;

 

#######################

 

Bom na tabela1 e a tabela de produtos e a tabela2 é a tabela de movimentações entao na tabela2 tenho um produto varias vezes estava fazendo um update e estava demorando muito para atualizar quase 140000 registros, entao decidi colocar para "COMITA" a cada 100 registros, enquanto a procedure esta executando observei q o commit nao esta sendo de 100 em 100 registros.

 

Vcs sabem oq estou fazendo de errado nesse loop?????

 

 

Obrigado!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ZERE O CONTADOR.

TESTE COM MAIOR OU IGUAL POR SEGURANÇA

 

IF COUNTER >= 100 THEN

COUNTER := 0;

COMMIT;

END IF;

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.