[firebase-br] Res: Problema na Stored Procedure

Jáber S. C. Lima cpd em lekagi.com.br
Seg Jun 15 16:31:57 -03 2009


Desculpem, na mensagem anterior faltou dizer que uso Delphi7+Zeos+Firebird2
1.2

 

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

 

De: Jáber S. C. Lima 

Data: 06/15/09 17:28:15 

Para: FireBase 

Assunto: [firebase-br] Problema na Stored Procedure 

 

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