Qual erro desta SP ?
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
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
Curtidas 0
Respostas
Emerson Nascimento
22/04/2009
resolveu o problema ?
GOSTEI 0