[firebase-br] Store Procedure
auristonlopes
auristonlopes em ig.com.br
Dom Mar 6 19:32:08 -03 2005
Lendo um exemplo no livro do cantu, resolvi fazer uma SP, para ver se
realmente funciona, que foi assim.
with IBStoredProc1 do
begin
ParamByName('CODPRO').AsInteger := Dm.qrymovprodCOD_MAT.AsInteger;
ParamByName('INICIO').AsDateTime:=
StrToDate('01/'+Copy(DateToStr(dm.qrymovprodDATA_EMI.AsDateTime),4,7));
ParamByName('FIM').AsDateTime := dm.qrymovprodDATA_EMI.AsDateTime;
ExecProc;
end;
So que retorna o seguinte erro
0.0 is not a valid timestamp.
Agora que tipo de campo retorna as SP,
Alguem me de uma luz
sds
auriston.
******** Corpo da SP
CREATE PROCEDURE FECHAMENTO (CODPRO INTEGER ,INICIO DATE, FIM DATE) RETURNS
(SALDOAN NUMERIC(9,4), SAIDA NUMERIC(9,4), ENTRADA NUMERIC(9,4), SALDOAT
NUMERIC(9,4))
AS
DECLARE VARIABLE SALDO_ANTERIOR NUMERIC(9,4);
DECLARE VARIABLE TOTAL_SAIDA NUMERIC(9,4);
DECLARE VARIABLE TOTAL_ENTRADA NUMERIC(9,4);
DECLARE VARIABLE SALDO_FINAL NUMERIC(9,4);
BEGIN
SELECT SUM(ENTRADAS)-SUM(SAIDAS) FROM MOVPROD WHERE ((COD_MAT = :CODPRO)
AND (DATA_EMI < :INICIO) AND (CANCELADA = 'N') AND (MOVIES = 'S')) INTO
:SALDO_ANTERIOR;
if (:SALDO_ANTERIOR IS NULL) then SALDO_ANTERIOR = 0.00;
SALDOAN = :SALDO_ANTERIOR;
SELECT SUM(ENTRADAS) FROM MOVPROD WHERE ((COD_MAT = :CODPRO) AND
(DATA_EMI >= :INICIO) AND (DATA_EMI <= :FIM) AND (CANCELADA = 'N') AND
(MOVIES = 'S')) INTO :TOTAL_ENTRADA;
if (:TOTAL_ENTRADA IS NULL) then TOTAL_ENTRADA = 0.00;
ENTRADA = :TOTAL_ENTRADA;
SELECT SUM(SAIDAS) FROM MOVPROD WHERE ((COD_MAT = :CODPRO) AND (DATA_EMI
>= :INICIO) AND (DATA_EMI <= :FIM) AND (CANCELADA = 'N') AND (MOVIES = 'S'))
INTO :TOTAL_SAIDA;
if (:TOTAL_SAIDA IS NULL) then TOTAL_SAIDA = 0.00;
SAIDA = :TOTAL_SAIDA;
SELECT SUM(ENTRADAS)-SUM(SAIDAS) FROM MOVPROD WHERE ((COD_MAT = :CODPRO)
AND (DATA_EMI >= :INICIO) AND (DATA_EMI <= :FIM) AND (CANCELADA = 'N') AND
(MOVIES = 'S')) INTO :SALDO_FINAL;
if (:SALDO_FINAL IS NULL) then SALDO_FINAL = 0.00;
SALDOAT = :SALDO_FINAL;
SUSPEND;
END;
Mais detalhes sobre a lista de discussão lista