e-junior 0 Denunciar post Postado Abril 8, 2008 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
Motta 645 Denunciar post Postado Abril 8, 2008 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
alphamek 2 Denunciar post Postado Abril 9, 2008 Exato Motta. Compartilhar este post Link para o post Compartilhar em outros sites
e-junior 0 Denunciar post Postado Abril 10, 2008 era isso mesmo tinha esquecido. Valeu obrigado!!!! Compartilhar este post Link para o post Compartilhar em outros sites