RES: [firebase-br] Store Procedure - Esta tá difícil
RAMJ SISTEMAS & CONSULTORIA
jubrovolski em yahoo.com.br
Qui Jan 27 12:33:42 -03 2005
Caro Nilton
Agora funcionou. Está tudo ok. Até que enfim. Já fazia algum tempo que eu
precisa resolver esta questão. Valeu pela ajuda. Agora o Caixa ficou show de
bola.
Reuber
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Nilton Souza
Enviada em: quinta-feira, 27 de janeiro de 2005 09:53
Para: FireBase
Assunto: Re: [firebase-br] Store Procedure - Esta tá difícil
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
______________________________________________
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