NET (c#) でこの単純な SQL クエリの結果を取得しようとしたときに発生する問題に直面しています。
select 1/3 as col from dual
OracleDataReader.GetValue(i)
例外をスローします:
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)
数値の精度が 28 桁を超えるとこのエラーが発生することがわかったため、エラーが発生します。
select round(1/3,29) as col from dual
しかし、これはしません
select round(1/3,28) as col from dual
C#で列の値をDoubleとして処理しようとすると、「無効なキャスト」というエラーが発生します
数値列のユビキタスな丸めを除いて、この状況を回避する方法を知っている人はいますか?