[firebase-br] Problema na Stored Procedure
Eduardo Jedliczka
jedyfb em gmail.com
Seg Jun 15 17:38:55 -03 2009
Defina a variável WANO como numeric(4,0)
Outra coisa, verifique se não está gerando alguma data inválida, por
exemplo 30 de fevereiro ou 31 de abril.
Abraço
Eduardo
Em Seg, 2009-06-15 às 16:23 -0300, Jáber S. C. Lima escreveu:
> 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