[firebase-br] ajuda com stored procedure
Carlos - GMail
krlosgilson em gmail.com
Dom Mar 11 10:54:38 -03 2012
bom dia! Amigo creio que o problema está no seu primeiro select (o que
pega o saldo anterior), acho que se vc quer pegar o saldo anterior de um
determinado período não deve especificar no operador o "=", pois assim
já está selecionando o saldo da data inicial do laço e assim irá somar o
mesmo valor duas vezes. Tente alterar de forma que fique assim:
...
SELECT cast(:pvalor as numeric(10,2)) +
SUM(CASE WHEN MVC_TIP = 'C' THEN MVC_VAL ELSE -MVC_VAL END)
FROM
FID005
WHERE
(MVC_DTC IS NOT NULL) and
(MVC_DTC< :dt1)
INTO
:SALDO_ATLZ;
...
Em 10/03/2012 12:00, lista-request em firebase.com.br escreveu:
> boa noite a todos estou com u m problema pois eu preciso que na
> primeira linha pegue o saldo anterior e some e abata e totalize por
> linhas mais esta dando erro na soma do saldo anterior com
>
> CREATE OR ALTER PROCEDURE MOVIMENTACAO (
> dt1 date,
> dt2 date,
> pvalor numeric(13,2),
> pemp integer)
> returns (
> codigo integer,
> credito numeric(18,4),
> debito numeric(18,4),
> saldo_atlz numeric(18,4))
> as
> BEGIN
> -- o erro ocorre aqui pois deveria pegar saldo da soma do saldo
> anterior com o primeiro lancamento do intervalo porem o valor da
> totalmente diferente
> SELECT cast(:pvalor as numeric(10,2)) +
> SUM(CASE WHEN MVC_TIP = 'C' THEN MVC_VAL ELSE -MVC_VAL END)
> FROM
> FID005
> WHERE
> (MVC_DTC IS NOT NULL) and
> (MVC_DTC<= :dt1)
> INTO
> :SALDO_ATLZ;
> -- Laço de leitura e envio de registros.
> FOR SELECT
> FID_COD,
> (CASE WHEN MVC_TIP = 'C' THEN MVC_VAL ELSE 0 END),
> (CASE WHEN MVC_TIP = 'D' THEN MVC_VAL ELSE 0 END)
> FROM
> FID005
> WHERE
> (MVC_DTC IS NOT NULL)AND
> (MVC_DTC between :dt1 and :dt2)
> ORDER BY
> FID_COD
> INTO
> :CODIGO,
> :CREDITO,
> :DEBITO
> DO
> BEGIN
> -- Atualiza o saldo.
> SALDO_ATLZ = SALDO_ATLZ + CREDITO - DEBITO;
> -- Retorna mais um registro.
> SUSPEND;
> END -- FOR
> END
>
> ex: se pvalor recebe 250 e o primeiro valor de credito ou debito fosse
> 118 para credito ou debito o saldo-atlz deveria ser 368 ou 122 porem
> fica em 535 e não sei por que isto
Mais detalhes sobre a lista de discussão lista