[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