[firebase-br] ajuda com stored procedure
Reijanio Nunes Ribeiro
rnribeiro em gmail.com
Seg Mar 12 07:36:37 -03 2012
tentei assim tambem e não deu certo
Em 11/03/12, Carlos - GMail<krlosgilson em gmail.com> escreveu:
> 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
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista