我在尝试在 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 得到错误“无效转换”
除了无处不在的数字列四舍五入之外,有谁知道避免这种情况的任何方法?