[firebase-br] Res: Problema na Stored Procedure

Jáber S. C. Lima cpd em lekagi.com.br
Seg Jun 15 17:30:11 -03 2009


Renato e Eduardo.. 

 

Desde já agradeço a ajuda. O problema era realmente o tamanho do campo
parcela na minha tabela.. 

Coisa tão simples que acabou passando despercebido... (Chega a ser
vergonhoso...hehe) 

 

Valeww pela força.. 

Abraço a todos... 

 

-------Mensagem original------- 

 

De: Renato Deggau 

Data: 15/06/2009 18:19:34 

Para: FireBase 

Assunto: Re: [firebase-br] Problema na Stored Procedure 

 

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 

> 

______________________________________________ 

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