[firebase-br] Ultimo loop dessa SP não está atualizando. O que há de errado?

Giovani Rochê giovaniroche em msn.com
Sex Out 10 07:28:08 -03 2008


Fiz essa SP abaixo e está rodando ok. No FOR SELECT que testei buscou 2 registros e debugando direto no FB vi que ele percorreu esses 2 registros porém no ultimo ele percorreu mas não efetivou as modificações. Alguém sabe me dizer o que pode estar acontecendo?

Obrigado.


CREATE PROCEDURE SP_RECEBE_OUTROS_PDV(
  COD_CLIENTE SMALLINT DEFAULT NULL,
  VALOR NUMERIC(18, 2) DEFAULT NULL)
AS
DECLARE VARIABLE SALDO NUMERIC(18, 2);
DECLARE VARIABLE COD SMALLINT;
DECLARE VARIABLE SUB NUMERIC(18, 2);
DECLARE VARIABLE NOVOVALOR NUMERIC(18, 2);
BEGIN

INSERT INTO CREDITO_CLIENTE (
COD_CLIENTE,
DATA_PGTO,
VALOR,
USADO,
CODIGO,
HORA_PGTO )
VALUES (
:COD_CLIENTE,
CURRENT_DATE,
:VALOR,
1,
GEN_ID(GEN_COD_CREDITO,1),
CURRENT_TIME );


SALDO = :VALOR;
FOR
SELECT CODIGO,SALDO FROM CONTA_A_RECEBER
 WHERE STATUS = 0
 AND VALOR > 0
 AND COD_CLIENTE = :COD_CLIENTE
 ORDER BY DATA_LANCAMENTO
 INTO
 :COD,:SUB
 DO
 BEGIN
  
  IF (:SALDO > 0) THEN
  BEGIN
       
       IF (:SALDO < :SUB) THEN
       BEGIN
          NOVOVALOR = :SUB - :SALDO;
          SALDO = 0;
       END
       IF (:SALDO > :SUB) THEN
       BEGIN
          NOVOVALOR = 0;
          SALDO = :SALDO - :SUB;
       END
       IF (:SALDO = :SUB) THEN
       BEGIN
            NOVOVALOR = 0;
            SALDO = 0;
       END
       UPDATE CONTA_A_RECEBER SET
       SALDO = :NOVOVALOR
       WHERE CODIGO = :COD;
       
       IF (:NOVOVALOR = 0) THEN
       BEGIN
            UPDATE CONTA_A_RECEBER SET
            STATUS = 1,
            DATA_PAGTO = CURRENT_DATE,
            HORA_PAGTO = CURRENT_TIME
            WHERE CODIGO = :COD;
       END
  END

   SUSPEND;
 END

END;



_________________________________________________________________
Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger!
http://www.amigosdomessenger.com.br/


Mais detalhes sobre a lista de discussão lista