Re: [firebase-br] Store Procedure - Esta tá difícil

Nilton Souza ntn em bbs2.sul.com.br
Qui Jan 27 10:52:36 -03 2005


Olá Reuber (agora acertei né !? heuheuh),

Seguinte, agora com o cabeçalho completo ficou mais fácil, remova o suspend
que restou e tudo passará a funcionar. O suspend é utilizado para a criação
de "Procedures Selecionáveis" oq não é o caso da sua procedure.

[]'s
Nilton Souza

----- Original Message -----
From: "RAMJ SISTEMAS & CONSULTORIA" <jubrovolski em yahoo.com.br>
To: "'FireBase'" <lista em firebase.com.br>
Sent: Thursday, January 27, 2005 11:14 AM
Subject: RES: [firebase-br] Store Procedure - Esta tá difícil


Caro Nilton

Com estas alterações que me passou, pelo menos agora a sp grava o saldo
correto do lançamento, porém ele não executa a atualização dos lançamentos
maiores que a data, ou seja ele não executa o for até o fim do arquivo,
somente no registro atual.
Tem mais alguma dica? Aí vai a sp alterada.

SET TERM ^ ;

CREATE PROCEDURE SALDOCAIXA (
    DATA DATE,
    CAIXA INTEGER)
AS
DECLARE VARIABLE ULTLANCTO INTEGER;
DECLARE VARIABLE SALDOANT NUMERIC(15,2) = 0;
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE TIPO VARCHAR(1);
DECLARE VARIABLE VALOR NUMERIC(15,2);
DECLARE VARIABLE DATAANT DATE;
begin
   SALDOANT=0;
   select Max(DATALAN) from MOVCAIXA where DATALAN<:DATA and CODCAIXA =
:CAIXA into :DATAANT;
   if (:DATAANT IS NOT NULL) then
      begin
       select Max(NUMLAN) from MOVCAIXA where DATALAN=:DATAANT and CODCAIXA
= :CAIXA into :ultlancto;
       select SALDOAT from MOVCAIXA where NUMLAN=:ultlancto  into :SALDOANT;
      end
   else
      begin
       select Min(DATALAN) from MOVCAIXA where CODCAIXA =:CAIXA into
:DATAANT;
       select Min(NUMLAN) from MOVCAIXA where DATALAN=:DATAANT and CODCAIXA
= :CAIXA into :ultlancto;
       SALDOANT=0;
      end


file://O erro deve estar aqui, mas não sei o que fazer. Esta correta a
sintaxe do
for?

   for select NUMLAN,TIPOLAN,VALORLAN from MOVCAIXA where DATALAN>=:DATA and
CODCAIXA = :CAIXA order by DATALAN,NUMLAN into :ID,:TIPO,:VALOR do
   begin
        if  (:TIPO='C') then begin
          SALDOANT=:SALDOANT+:VALOR;
        end else begin
          SALDOANT=:SALDOANT-:VALOR;
        end
        update MOVCAIXA set SALDOAT=:SALDOANT where NUMLAN=:ID;
        suspend;
   end
end
^

SET TERM ; ^

GRANT SELECT,UPDATE ON MOVCAIXA TO PROCEDURE SALDOCAIXA;

GRANT EXECUTE ON PROCEDURE SALDOCAIXA TO SYSDBA;


Trabalho com vários caixas, por isso preciso informar a data e o caixa para
fazer a atualização.


Reuber





______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br






Mais detalhes sobre a lista de discussão lista