Oracle 数据类型映射

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

Oracle 数据类型

由 OracleDataReader.GetValue 返回的 .NET Framework 数据类型

由 OracleDataReader.GetOracleValue 返回的 OracleClient 数据类型

备注

BFILE

Byte[]

OracleBFile

 

BLOB

Byte[]

OracleLob

 

CHAR

String

OracleString

 

CLOB

String

OracleLob

 

DATE

DateTime

OracleDateTime

 

FLOAT

Decimal

OracleNumber

此数据类型是 NUMBER 数据类型的别名,其设计目的是使 OracleDataReader 返回 System.DecimalOracleNumber,而不是浮点值。 使用该 .NET Framework 数据类型可能导致溢出。

INTEGER

Decimal

OracleNumber

此数据类型是 NUMBER(38) 数据类型的别名,其设计目的是使 OracleDataReader 返回 System.DecimalOracleNumber,而不是整数值。 使用该 .NET Framework 数据类型可能导致溢出。

INTERVAL YEAR TO MONTH

Int32

OracleMonthSpan

 

INTERVAL DAY TO SECOND

TimeSpan

OracleTimeSpan

 

LONG

String

OracleString

 

LONG RAW

Byte[]

OracleBinary

 

NCHAR

String

OracleString

 

NCLOB

String

OracleLob

 

NUMBER

Decimal

OracleNumber

使用该 .NET Framework 数据类型可能导致溢出。

NVARCHAR2

String

OracleString

 

RAW

Byte[]

OracleBinary

 

REF CURSOR

 

 

OracleDataReader 对象不支持 Oracle REF CURSOR 数据类型。

ROWID

String

OracleString

 

TIMESTAMP

DateTime

OracleDateTime

 

TIMESTAMP WITH LOCAL TIME ZONE

DateTime

OracleDateTime

 

TIMESTAMP WITH TIME ZONE

DateTime

OracleDateTime

 

UNSIGNED INTEGER

Number

OracleNumber

此数据类型是 NUMBER(38) 数据类型的别名,其设计目的是使 OracleDataReader 返回 System.DecimalOracleNumber,而不是无符号整数值。 使用该 .NET Framework 数据类型可能导致溢出。

VARCHAR2

String

OracleString

 

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

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.StringOracleString),适用于 Oracle 的 .NET 数据提供程序并不会自动为您构造这样的值。

DATE

DateTime

DateTime

 

FLOAT

Single、Double、Decimal

Float、Double、Number

Size 确定 System.Data.DBTypeOracleType

INTEGER

SByte、Int16、Int32、Int64、Decimal

SByte、Int16、Int32、Number

Size 确定 System.Data.DBTypeOracleType

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.StringOracleString),适用于 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.DBTypeOracleType

VARCHAR2

AnsiString

VarChar

 

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

请参见

其他资源

Oracle 和 ADO.NET