Oracle 数据类型映射
下表列出 Oracle 数据类型及其与 OracleDataReader 的映射。
Oracle 数据类型 |
由 OracleDataReader.GetValue 返回的 .NET Framework 数据类型 |
由 OracleDataReader.GetOracleValue 返回的 OracleClient 数据类型 |
备注 |
BFILE |
Byte[] |
|
|
BLOB |
Byte[] |
|
|
CHAR |
String |
|
|
CLOB |
String |
|
|
DATE |
DateTime |
|
|
FLOAT |
Decimal |
此数据类型是 NUMBER 数据类型的别名,其设计目的是使 OracleDataReader 返回 System.Decimal 或 OracleNumber,而不是浮点值。使用该 .NET Framework 数据类型可能导致溢出。 |
|
INTEGER |
Decimal |
此数据类型是 NUMBER(38) 数据类型的别名,其设计目的是使 OracleDataReader 返回 System.Decimal 或 OracleNumber,而不是整数值。 使用 .NET Framework 数据类型可能导致溢出。 |
|
INTERVAL YEAR TO MONTH |
Int32 |
|
|
INTERVAL DAY TO SECOND |
TimeSpan |
|
|
LONG |
String |
|
|
LONG RAW |
Byte[] |
|
|
NCHAR |
String |
|
|
NCLOB |
String |
|
|
NUMBER |
Decimal |
使用 .NET Framework 数据类型可能导致溢出。 |
|
NVARCHAR2 |
String |
|
|
RAW |
Byte[] |
|
|
REF CURSOR |
|
|
OracleDataReader 对象不支持 Oracle REF CURSOR 数据类型。 |
ROWID |
String |
|
|
TIMESTAMP |
DateTime |
|
|
TIMESTAMP WITH LOCAL TIME ZONE |
DateTime |
|
|
TIMESTAMP WITH TIME ZONE |
DateTime |
|
|
UNSIGNED INTEGER |
Number |
此数据类型是 NUMBER(38) 数据类型的别名,其设计目的是使 OracleDataReader 返回 System.Decimal 或 OracleNumber,而不是无符号整数值。 使用 .NET Framework 数据类型可能导致溢出。 |
|
VARCHAR2 |
String |
|
下表列出了在将数据类型作为参数绑定时使用的 Oracle 数据类型和 .NET Framework 数据类型(System.Data.DbType 和 OracleType)。
Oracle 数据类型 |
要绑定为参数的 DbType 枚举 |
要绑定为参数的 OracleType 枚举 |
备注 |
BFILE |
|
BFile |
Oracle 只允许将 BFILE 绑定为 BFILE 参数。 如果您尝试绑定一个非 BFILE 值(如 byte[] 或 OracleBinary),适用于 Oracle 的 .NET 数据提供程序并不会自动为您构造这样的值。 |
BLOB |
|
Blob |
Oracle 只允许将 BLOB 绑定为 BLOB 参数。 如果您尝试绑定一个非 BLOB 值(如 byte[] 或 OracleBinary),适用于 Oracle 的 .NET 数据提供程序并不会自动为您构造这样的值。 |
CHAR |
AnsiStringFixedLength |
Char |
|
CLOB |
|
Clob |
Oracle 只允许将 CLOB 绑定为 CLOB 参数。 如果您尝试绑定一个非 CLOB 值(如 System.String 或 OracleString),适用于 Oracle 的 .NET 数据提供程序并不会自动为您构造这样的值。 |
DATE |
DateTime |
DateTime |
|
FLOAT |
Single、Double、Decimal |
Float、Double、Number |
Size 确定 System.Data.DBType 和 OracleType。 |
INTEGER |
SByte、Int16、Int32、Int64、Decimal |
SByte、Int16、Int32、Number |
Size 确定 System.Data.DBType 和 OracleType。 |
INTERVAL YEAR TO MONTH |
Int32 |
IntervalYearToMonth |
只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。 |
INTERVAL DAY TO SECOND |
Object |
IntervalDayToSecond |
只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。 |
LONG |
AnsiString |
LongVarChar |
|
LONG RAW |
Binary |
LongRaw |
|
NCHAR |
StringFixedLength |
NChar |
|
NCLOB |
|
NClob |
Oracle 只允许将 NCLOB 绑定为 NCLOB 参数。 如果您尝试绑定一个非 NCLOB 值(如System.String 或 OracleString),适用于 Oracle 的 NET 数据提供程序并不会自动为您构造这样的值。 |
NUMBER |
VarNumeric |
Number |
|
NVARCHAR2 |
String |
NVarChar |
|
RAW |
Binary |
Raw |
|
REF CURSOR |
|
Cursor |
有关更多信息,请参见Oracle REF CURSOR。 |
ROWID |
AnsiString |
Rowid |
|
TIMESTAMP |
DateTime |
Timestamp |
只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。 |
TIMESTAMP WITH LOCAL TIME ZONE |
DateTime |
TimestampLocal |
只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。 |
TIMESTAMP WITH TIME ZONE |
DateTime |
TimestampWithTz |
只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。 |
UNSIGNED INTEGER |
Byte、UInt16、UInt32、UInt64、Decimal |
Byte、UInt16、Uint32、Number |
Size 确定 System.Data.DBType 和 OracleType。 |
VARCHAR2 |
AnsiString |
VarChar |
|
由 OracleParameter 对象的 Value 属性使用的 InputOutput、Output 和 ReturnValue ParameterDirection 值为 .NET Framework 数据类型,除非输入值是 Oracle 数据类型(例如 OracleNumber 或 OracleString)。这并不适用于 REF CURSOR、BFILE 或 LOB 数据类型。