[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