来自Oracle的IDataReader在返回十进制值时溢出

我有一些代码负责将数据从
IDataReader
转换为
IronPython.Runtime.List
PythonTuples
。这些相同的代码用于几种不同类型的数据库连接(包括Access,Oracle和MySql)。 当光标包含具有大精度的值时,Oracle的
OracleDecimal
数据类型在调用
dataReader.GetValues()
时会导致溢出。这个问题已有详细记录,解决方案总是涉及使用
OracleDataAdapter
上的特定方法。我只有一个
IDataReader
接口。 有没有办法绕过这个问题而不将我的代码专门绑定到ODP.NET?当然必须有一些方法以提供者无关的方式获取这些数据?     
已邀请:
我所知道的唯一提供程序不可知方法是对select语句中的值进行舍入。我发现舍入到15位小数通常可以解决问题。     
它可能不是你想要的,但是
System.Data.Common.DbDataReader
类有一个
GetProviderSpecificValues
功能可以做你想要的     

要回复问题请先登录注册