[firebase-br] Integer OverFlow

Nivaldo Martins nivaldomart em gmail.com
Sex Out 16 17:55:47 -03 2009


Olá Maicon

O problema é que o numeric entre 5 e 9 casas armazena inteiro. E alguns
cálculos que este select faz dependendo do valor está estourando a faixa de
valores suportados pelo inteiro.

veja neste artigo

http://www.firebase.com.br/fb/artigo.php?id=2019

Pode te dar uma idéia melhor do que está acontecendo

Um abraço

Nivaldo Martins

2009/10/16 Maicon Bernardes <phobia.all em gmail.com>

> Boa Tarde, estou executando uma operação SQL de cálculo de saldo
> mas quando abro a query dependendo do produto em questão da este erro:
>
> "Database Server Error: Integer overflow.  The result of an integer
> operation caused the most significant bit of the result to carry."
>
> a linha do SQL:
>
> SELECT X.CD_PROD, CAST(SUM(X.QT_MOV) AS NUMERIC(15,6)) AS SALDO
> FROM (SELECT  A.CD_PROD,
>      COALESCE(A.QT_MOV,0)*(1/COALESCE(C.FT_UNIDCONV,1)) AS QT_MOV
>      FROM DM173 A
>      LEFT JOIN DM175 B ON (B.CD_EMPRESA = A.CD_EMPRESA AND B.CD_PROD =
> A.CD_PROD)
>      LEFT JOIN DM186 C ON (C.CD_EMPRESA = A.CD_EMPRESA AND C.CD_UNIDORIG =
> B.CD_UNID AND C.CD_UNIDDEST = B.CD_UNIDCONS AND       C.CD_UNIDORIG =
> A.CD_UNID)
>      WHERE A.CD_EMPRESA = 1
>      AND A.TP_MOV = 'E'
>      AND A.CD_PROD = :CD_PROD
> UNION ALL
> SELECT A.CD_PROD,
> CAST(COALESCE(-A.QT_MOV,0)*(1/COALESCE(C.FT_UNIDCONV,1)) AS NUMERIC(15,6))
> AS QT_MOV
> FROM DM173 A
> LEFT JOIN DM175 B ON (B.CD_EMPRESA = A.CD_EMPRESA AND B.CD_PROD =
> A.CD_PROD)
> LEFT JOIN DM186 C ON (C.CD_EMPRESA = A.CD_EMPRESA AND C.CD_UNIDORIG =
> B.CD_UNID AND C.CD_UNIDDEST = B.CD_UNIDCONS AND C.CD_UNIDORIG = A.CD_UNID)
> WHERE A.CD_EMPRESA = 1
> AND  A.TP_MOV = 'S'
> AND A.CD_PROD = :CD_PROD) X
> GROUP BY X.CD_PROD
>
> sendo que com alguns produtos o SQL retorna corretamente e com outros da
> esta msg.
>
> Obrigado desde já
> Maicon Bernardes
> ______________________________________________
> 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