【发布时间】:2019-04-24 08:26:41
【问题描述】:
我在 Oracle SQL Developer 中有 1 个表,其中包含 1 个 column as Float.Data reader 应该按照此处给出的表返回 Decimal for oracle float datatype:https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/oracle-data-type-mappings
但问题是数据读取器为Float Column 返回double as datatype,如下所示:
但问题是 datareader 返回 double 作为 NREAL as Float 和 NFLOAT1 as float 的数据类型,令人惊讶的是
datareader 返回Decimal for both the column 如下图:
代码:
static void Test()
{
using (OracleConnection connection = new OracleConnection("connection string")
{
connection.Open();
using (OracleCommand command = connection.CreateCommand())
{
command.CommandText = "select id , NFLOAT from Numeric_Table";
using (OracleDataReader reader = command.ExecuteReader())
{
for (int i = 0; i < reader.FieldCount; i++)
{
var columnName = reader.GetName(i);
var dotNetType = reader.GetFieldType(i);
var sqlType = reader.GetDataTypeName(i);
}
}
}
}
}
我正在使用:Oracle.ManagedDataAccess.Client
这是Oracle.ManagedDataAccess.Client library 内部的错误还是我做错了什么?
更新:基于 cmets 我想提一点:
虽然我可能参考了不适用于我正在使用的 oracle 库的不同源文档,但我仍然为我的其他 2 列(即 NREAL 和 NFLOAT1)获取十进制数据类型,那么为什么这种行为不一致?
【问题讨论】:
-
System.Data.OracleClientOracle.ManagedDataAccess.Client所以它可能有不同的绑定 -
如果您使用的是
Oracle.ManagedDataAccess,那么您正在查看错误的文档,因为您链接的是System.Data.OracleClient。试试docs.oracle.com/database/121/ODPNT/toc.htm -
@Selvin 但对于其他列,即 NREAL 和 NFLOAT1,我得到的是十进制数据类型。那怎么样?
-
@Dirk 但是对于其他列,即 NREAL 和 NFLOAT1,我得到的是十进制数据类型。那怎么样?
标签: c# oracle ado.net oracle-sqldeveloper oracle.manageddataaccess