下表列出 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.Decimal 或 OracleNumber 而不是浮点型数值。 使用该 .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 |
对象的属性使用的 ReturnValue、Output 和 ValueOracleParameter 值是 .NET Framework 数据类型,除非输入值为 Oracle 数据类型(例如,OracleNumber或OracleString)。 这不适用于 REF CURSOR、 BFILE 或 LOB 数据类型。