Fórum Erro na Store Procedure #369945

24/04/2009

0

Estou utilizando INTERBASE, D7.

Qdo executo esta SQL :
da um erro de aritmetc overflow e mostra so a primeira linha SALDO ANTERIOR.


SEGUE O SP:

CREATE PROCEDURE MOVIMENTOFLUXOCAIXA(
DATAINICIAL DATE)
RETURNS(
CAILAN INTEGER,
CAIDAT DATE,
CAITIP CHAR(1) CHARACTER SET NONE,
CAIHIS VARCHAR(40) CHARACTER SET NONE,
CAIVAL NUMERIC(18, 2),
SALDO NUMERIC(18, 2))
AS
DECLARE VARIABLE DEBITO DOUBLE PRECISION;
DECLARE VARIABLE CREDITO DOUBLE PRECISION;
DECLARE VARIABLE SALDOATUAL DOUBLE PRECISION;
BEGIN
select Sum(CPR.ValorOriginal) from ContasPagarReceber CPR
Inner Join Contas co on co.CodConta = CPR.CodConta
Inner Join GrupoContas gc on gc.CodGrupoConta = co.CodGrupo
Where gc.TipoConta = 1 AND CPR.DataVencimento < :DATAINICIAL into :DEBITO;

select Sum(CPR.ValorOriginal) from ContasPagarReceber CPR
Inner Join Contas co on co.CodConta = CPR.CodConta
Inner Join GrupoContas gc on gc.CodGrupoConta = co.CodGrupo
Where gc.TipoConta = 2 AND CPR.DataVencimento < :DATAINICIAL into :CREDITO;

SALDOATUAL =CREDITO - DEBITO;
CAILAN =0 ;
CAIDAT = DATAINICIAL - 1;
CAITIP = ´´;
CAIHIS = ´SALDO ANTERIOR´;
CAIVAL = SALDOATUAL;
SALDO = SALDOATUAL;
suspend;
for select
CPR.CODCONTASPAGARRECEBER,CPR.DATAVENCIMENTO,GC.TIPOCONTA,CPR.HISTORICO,CPR.VALORORIGINAL,CPR.VALORORIGINAL from
CONTASPAGARRECEBER CPR
Inner Join Contas co on co.CodConta = CPR.CodConta
Inner Join GrupoContas gc on gc.CodGrupoConta = co.CodGrupo
where CPR.DATAVENCIMENTO >= :DATAINICIAL order by CPR.DATAVENCIMENTO,CPR.CODCONTASPAGARRECEBER into
:CAILAN,:CAIDAT,:CAITIP,:CAIHIS,:CAIVAL,:SALDO do
begin
if (CAITIP = ´2´) then SALDO = SALDOATUAL + :CAIVAL;
if (CAITIP = ´1´) then SALDO = SALDOATUAL - :CAIVAL;
SALDOATUAL = :SALDO;
suspend;
end
END


Walter Faria

Walter Faria

Responder

Posts

27/04/2009

Emarcolongo

aritmetc overflow ocorre porque alguma operação não esta conseguindo ser feita, por ser por exemplo uma divisão por zero, talvez um resultado não suportado, etc.
tente fazer um teste de mesa para validar seus dados.

o que pode ocorrer tb. é vc tentar armazenar uma qtde de
caracteres maior que o campo suporte, por exemplo, vc
esta passando ´SAO PAULO´ para um campo varchar ou char de 1 posição.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar