2012-04-11 19 views
5

estoy frente a un problema que se produce cuando se trata de obtener los resultados de esta simple consulta SQL en .NET (C#):valor de la fracción Infinito en la columna de consulta SQL en C#

select 1/3 as col from dual 

OracleDataReader.GetValue(i) se emite una excepción:

Arithmetic operation resulted in an overflow. 
at Oracle.DataAccess.Types.DecimalConv.GetDecimal(IntPtr numCtx) 
at Oracle.DataAccess.Client.OracleDataReader.GetDecimal(Int32 i) 
at Oracle.DataAccess.Client.OracleDataReader.GetValue(Int32 i) 

he descubierto que este error cuando occures número de precisión alto 28 dígitos, por lo que esto conduce a error:

select round(1/3,29) as col from dual 

pero esto no

select round(1/3,28) as col from dual 

será intentar tratar valor de columna en C# como Doble recibe error "fundido no válido"

¿Alguien sabe alguna manera para evitar esta situación, excepto de redondeo ubicua de columnas de números?

+0

¿Se puede decir por qué usted quiere hacer 1/3 de consulta a la base !! –

+0

Fue solo un ejemplo. Puede obtener una fracción infinita como resultado de alguna fórmula, comenzando desde la media aritmética hasta cálculos más complejos –

+0

¿Qué sucede si hace esto: 'seleccionar 1.0/3.0 desde dual'? –

Respuesta

Cuestiones relacionadas