当使用Oracle.ManagedDataAccess.Client.OracleDataReader
然后调用reader.GetValue(i)
时,我们得到了上面的异常。
这可以使用这个查询来模拟:
SELECT 1/3 as foo FROM DUAL
当 oracle 数据是 Oracle 类型Decimal
,并且数据中的精度超过 .NET 小数点中的小数位数时,就会出现问题。主要问题是这样reader.GetValue(i)
做,因此您无法控制它在内部引发此错误的事实。
我实际上有一个解决方法,我将把它作为答案发布,因为我过去曾多次遇到过这个问题,而网络还没有一个好的答案。
有关的: