[firebase-br] Cursor PL SQL

Everton Barbosa evertonpinduka em gmail.com
Qui Dez 24 10:34:17 -03 2009


Bom Dia Pessoal,
estou precisando de uma ajuda sobre cursor em PL SQL.


Eu tenho uma table com as seguintes columns.

nº contrat, nº lib, nº parcela, juros, valor principal.

Em teoria seria a seguinte maneira os valores, uma parcela de juros
somente e outra de juros + principal.
Mas de uns tempos para cá está trazendo juros + principal em todas as
parcelas... isto está ocorrendo em relação ao problema de software não
de banco.

Eu to tentando desenvolver uma maneira de pegar o proximo registro
sendo que se o valor principal for menor que o valor principal do
registro atual então somar os dois e o proximo registro irá receber
zero. Eu fiz esse cursor aqui mas não estou conseguindo fazer o
tratamento dele, poderiam dar me uma ajuda?





DECLARE @VLR_PRINC NUMBER (20,2)
DECLARE @CTR_LIB   NUMBER (20)
DECLARE @PARC      NUMBER (4)

DECLARE
   C_PRINCIPAL CURSOR
  IS
    SELECT CONCAT(CONCAT(NM_CONTRAT,'/'),NM_LIBERAC)
CTR_LIB,NM_PARCELA,VLR_PRINC,
           PRINCIPAL
      FROM ZZ_PARCELA_ABERTA
      ORDER BY CTR_LIB,NM_PARCELA
      FOR UPDATE OF VLR_PRINCIPAL NOWAIT;

BEGIN
  FOR CTR_LIB,NM_PARCELA,VLR_PRINC IN C_PRINCIPAL
  LOOP
    IF (@CTR_LIB = CTR_LIB) AND (@PARC = NM_PARCELA) THEN
      UPDATE ZZ_PARCELA_ABERTA
      SET VLR_PRINCIPAL = @VLR_PRINC + VLR_PRINCIPAL
       WHERE CURRENT OF C_PRINCIPAL > @VLR_PRINC;


  --falta coisas ainda!!!




  END LOOP;
  COMMIT;

END;




PS: as variaveis vão ser utilizadas na procedure.




Mais detalhes sobre a lista de discussão lista