[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