[firebase-br] Problema na Stored Procedure

Renato Deggau rdeggau em gmail.com
Seg Jun 15 18:04:07 -03 2009


Na tabela tbl_pagar, qual o tamanho do campo parcela? Suporta 100?

Renato Deggau

2009/6/15 Jáber S. C. Lima <cpd em lekagi.com.br>

> Olá pessoal.
>
>
>
> A seguinte Stored Procedure serve para gravar as contas a pagar que são
> parceladas no meu sistema.
>
> Ontem descobri um erro e não consegui resolver... Quando se lança uma conta
> a pagar em até 99 parcelas a SP funciona 100%. Quando as parcelas são acima
> de 99 ele gera a seguinte mensagem de erro:
>
>
>
> {Arithmetic overflow or division by zero has occurred.
>
> arithmetic exception, numeric overflow, or string truncation.
>
> At procedure 'SET_GRAVAPARCELAS' line: 32, col: 9.}
>
>
>
> Segue abaixo a DDL da SP.
>
>
>
> Grato a todos que puder ajudar..
>
>
>
> Jáber S. C. Lima - Rondonópolis/MT
>
>
>
> SET TERM ^ ;
>
>
>
> create or alter procedure SET_GRAVAPARCELAS (
>
>    EMPRESA integer,
>
>    NRDOC varchar(40),
>
>    CODFORNECE integer,
>
>    NOMEFORNECE varchar(80),
>
>    CODGRUPOCENTCUST integer,
>
>    CODCENTCUST integer,
>
>    DTCADASTRO date,
>
>    DTDOCTO date,
>
>    DTVENCTO date,
>
>    VALOR D_MONEY not null,
>
>    DESCTO D_PERCENT not null,
>
>    TOTAL D_MONEY not null,
>
>    PARCELA varchar(6),
>
>    CONDFUNCCAD integer,
>
>    QUITADO char(1),
>
>    OBSERVACOES varchar(80))
>
> as
>
> declare variable WDIA numeric(2,0);
>
> declare variable WMES numeric(2,0);
>
> declare variable WANO numeric(2,0);
>
> declare variable WPARCELAS numeric(6,0);
>
> declare variable WDATA date;
>
> begin
>
>    select extract(day from :dtvencto) from rdb$database into :wDia;
>
>    select extract(month from :dtvencto) from rdb$database into :wMes;
>
>    select extract(year from :dtvencto) from rdb$database into :wAno ;
>
>    wParcelas = 1;
>
>    while (wParcelas   <= cast(:parcela as integer)) do
>
>    begin
>
>        wData  = cast(cast(wMes as varchar(2)) || '/' || cast(wDia as
> varchar(2)) || '/' || cast(wAno as varchar(4)) as date); /*Aqui fica a
> linha
> 32 */
>
>        insert into tbl_pagar (EMPRESA, NRDOC, CODFORNECE, NOMEFORNECE,
> CODGRUPOCENTCUST, CODCENTCUST, DTCADASTRO, DTDOCTO, DTVENCTO, VALOR,
> DESCTO,
> TOTAL, PARCELA, CONDFUNCCAD, QUITADO, OBSERVACOES)
>
>                  VALUES (:EMPRESA,:NRDOC,:CODFORNECE,:NOMEFORNECE
> :CODGRUPOCENTCUST,:CODCENTCUST,:DTCADASTRO,:DTDOCTO,:WData,:VALOR,:DESCTO
> :TOTAL, :WPARCELAS||'/'||:parcela,:CONDFUNCCAD,:QUITADO,:OBSERVACOES);
>
>        wParcelas = wParcelas + 1;
>
>        wMes = wMes + 1;
>
>        if (wMes >12) then
>
>        begin
>
>            wMes = 1;
>
>            wAno = wAno + 1;
>
>        end
>
>    end
>
> end^
>
>
>
> SET TERM ; ^
>
> ______________________________________________
> 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