Oracle 数据类型映射C#

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.Decimal 或 OracleNumber,而不是浮点值。使用该 .NET Framework 数据类型可能导致溢出。

INTEGER 

Decimal 

OracleNumber 

此数据类型是 NUMBER(38) 数据类型的别名,其设计目的是使 OracleDataReader 返回 System.Decimal 或 OracleNumber,而不是整数值。 使用 .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.Decimal 或 OracleNumber,而不是无符号整数值。 使用 .NET Framework 数据类型可能导致溢出。

VARCHAR2 

String 

OracleString 

 

下表列出了在将数据类型作为参数绑定时使用的 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 

SingleDoubleDecimal 

FloatDoubleNumber 

Size 确定 System.Data.DBType 和 OracleType

INTEGER 

SByteInt16Int32Int64Decimal 

SByteInt16Int32Number 

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 

ByteUInt16UInt32UInt64Decimal 

ByteUInt16Uint32Number 

Size 确定 System.Data.DBType 和 OracleType

VARCHAR2 

AnsiString 

VarChar 

 

由 OracleParameter 对象的 Value 属性使用的 InputOutput、Output 和 ReturnValue ParameterDirection 值为 .NET Framework 数据类型,除非输入值是 Oracle 数据类型(例如 OracleNumber 或 OracleString)。这并不适用于 REF CURSOR、BFILE 或 LOB 数据类型。

原文地址:https://www.cnblogs.com/Brainpan/p/3205764.html