Oracle 数据类型映射

下表列出 Oracle 数据类型及其与 OracleDataReader 的映射。

Oracle 数据类型 由 OracleDataReader.GetValue 返回的 .NET Framework 数据类型 由 OracleDataReader.GetOracleValue 返回的 OracleClient 数据类型 备注
BFILE Byte[] OracleBFile
BLOB Byte[] OracleLob
字符串 OracleString
CLOB 字符串 OracleLob
DATE 日期时间 OracleDateTime
十进制 OracleNumber 此数据类型是 NUMBER 数据类型的别名,旨在使 OracleDataReader 返回 System.DecimalOracleNumber 而不是浮点型数值。 使用该 .NET Framework 数据类型可能导致溢出。
整数 十进制 OracleNumber 此数据类型是 NUMBER(38) 数据类型的别名,其设计目的是使 返回 System.Decimal 或 OracleDataReader,而不是整数值。 使用该 .NET Framework 数据类型可能导致溢出。
年到月间隔 Int32 OracleMonthSpan
时间间隔 从日到秒 TimeSpan OracleTimeSpan
字符串 OracleString
LONG RAW Byte[] OracleBinary
NCHAR 字符串 OracleString
NCLOB 字符串 OracleLob
NUMBER 十进制 OracleNumber 使用该 .NET Framework 数据类型可能导致溢出。
NVARCHAR2 字符串 OracleString
RAW Byte[] OracleBinary
REF CURSOR 对象不支持 Oracle REF CURSOR 数据类型。
ROWID 字符串 OracleString
时间戳 日期时间 OracleDateTime
具有本地时区的时间戳 日期时间 OracleDateTime
时间戳与时区 日期时间 OracleDateTime
无符号整数 数字 OracleNumber 此数据类型是 NUMBER(38) 数据类型的别名,其设计目的是使 返回 System.Decimal 或 OracleDataReader,而不是无符号整数值。 使用该 .NET Framework 数据类型可能导致溢出。
VARCHAR2 字符串 OracleString

下表列出了在将数据类型作为参数绑定时使用的 Oracle 数据类型和 .NET Framework 数据类型(System.Data.DbType 和 )。

Oracle 数据类型 要绑定为参数的 DbType 枚举 要绑定为参数的 OracleType 枚举 备注
BFILE BFile Oracle 仅允许绑定 BFILE 作为 BFILE 参数。 如果尝试绑定非 BFILE 值(例如 byte[]OracleBinary),则适用于 Oracle 的 .NET 数据提供程序不会自动构造一个。
BLOB 斑点 Oracle 仅允许绑定 BLOB 作为 BLOB 参数。 如果尝试绑定非 BLOB 值,例如 byte[]OracleBinary,则适用于 Oracle 的 .NET 数据提供程序不会自动为您构造一个。
AnsiStringFixedLength 字符
CLOB Clob Oracle 仅允许绑定 CLOB 作为 CLOB 参数。 如果你尝试绑定一个非 CLOB 值(如 System.String 或 ),则适用于 Oracle 的 .NET 数据提供程序不会自动构造这样的值。
DATE 日期时间 日期时间
Single、Double、Decimal Float、Double、Number Size 确定 System.Data.DBType 和
整数 SByte、Int16、Int32、Int64、Decimal SByte、Int16、Int32、Number Size 确定 System.Data.DBType 和
年到月间隔 Int32 IntervalYearToMonth 只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。
天到秒的时间间隔 对象 IntervalDayToSecond 只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。
AnsiString LongVarChar
LONG RAW 二进制 LongRaw
NCHAR StringFixedLength NChar
NCLOB NClob Oracle 仅允许绑定 NCLOB 作为 NCLOB 参数。 如果你尝试绑定一个非 NCLOB 值(如System.String 或 ),则适用于 Oracle 的 NET 数据提供程序不会自动构造这样的值。
NUMBER VarNumeric 数字
NVARCHAR2 字符串 NVarChar
RAW 二进制 原始
REF CURSOR 游标 有关详细信息,请参阅 Oracle REF CURSOR
ROWID AnsiString Rowid
时间戳 日期时间 时间戳 只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。
具有本地时区的时间戳 日期时间 TimestampLocal 只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。
时间戳与时区 日期时间 TimestampWithTz 只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。
无符号整数 Byte、UInt16、UInt32、UInt64、Decimal Byte、UInt16、Uint32、Number Size 确定 System.Data.DBType 和
VARCHAR2 AnsiString VarChar

对象的属性使用的 ReturnValueOutputValueOracleParameter 值是 .NET Framework 数据类型,除非输入值为 Oracle 数据类型(例如,OracleNumberOracleString)。 这不适用于 REF CURSORBFILELOB 数据类型。

请参阅