为什么我的Oracle号码被改变时,填充我的数据集使用Oracle. manageddataaccess .dll

本文关键字:我的 Oracle 数据集 dll 填充 manageddataaccess 号码 改变 为什么 | 更新日期: 2023-09-27 18:02:11

对于一个特定的例子,我有"31724977359034458496430204230"存储在数据库中,但是当我使用dataadapter.Fill()到一个带有十进制列的数据表时,我得到的是"3172497735903445849643020435"。

我正在使用Oracle.ManagedDataAccess.dll,我没有遇到微软提供商的这个问题。

我可以提供反编译的"GetDecimal"Oracle函数,如果这对任何人都有帮助的话。

注意:只有当小数的长度为29位时才会出现这种情况。

Edit:从另一个表中的外键列正确检索相同的值。都定义为Number(30,0)

为什么我的Oracle号码被改变时,填充我的数据集使用Oracle. manageddataaccess .dll

一个Oracle NUMBER最多可以有38位有效数字。. net框架的十进制类型被限制为28位。将Oracle NUMBER读入。net框架的十进制类型会导致NUMBER值超过28位的OverflowException。如果您正在从OracleDataReader读取Oracle NUMBER值,我们建议您调用GetOracleNumber类型访问器方法来返回Oracle NUMBER值作为OracleNumber。如果您正在填充数据集,您可以使用FillError事件来确定是否发生了OverflowException,并在发生时采取适当的操作。