Atualizar registro do Cursor (FETCH)
Tenho uma Procedure, e nela eu percorro um resultado SQL através de um CURSOR.
Para cada registro da SQL(FETCH), faço cálculos e com o resultado desse cálculo eu preciso atualizar esse registro.
Sem a adição da SQL - "Update" dentro do CURSOR, os cálculos são feitos corretamente. PORÉM, ao adicionar o UPDATE dentro do CURSOR, para atualizar o registro em questão, ocorre problemas com os valores (cálculos) das variáveis.
É como se ao atualizar o mesmo registro fosse chamado novamente, antes de partir para o próximo registro.
Código do CURSOR:
OPEN cursorSQL;
REPEAT
FETCH cursorSQL INTO VI_CodigoCredito, VN_Valor, VC_Tipo;
if (not DONE) then
if (VC_Tipo = 'S') then SET VN_Valor := (VN_Valor * -1); end if;
SET VN_ValorAnterior := VN_NovoValor;
SET VN_NovoValor := VN_ValorAnterior + VN_Valor;
/*===>>>> SE COLOCO O UPDATE AQUI DA ERRO <<<===*/
UPDATE credito c
SET c.ValorAnt_CRE = VN_ValorAnterior,
c.NovoValor_CRE = VN_NovoValor
WHERE c.KCredito_CRE = VI_CodigoCredito;
end if;
UNTIL DONE END REPEAT;
CLOSE cursorSQL;
Como faço então para colocar uma instrução UPDATE dentro do CURSOR sem ocorrer esse tipo de problema?
Subject
Views
Written By
Posted
Atualizar registro do Cursor (FETCH)
6018
April 05, 2011 11:40AM
Sorry, you can't reply to this topic. It has been closed.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion
of Oracle or any other party.