Oracle 数据类型映射

162 阅读3分钟

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

Oracle 数据类型由 OracleDataReader.GetValue 返回的 .NET Framework 数据类型由 OracleDataReader.GetOracleValue 返回的 OracleClient 数据类型Remarks(备注)
BFILEByte[]OracleBFile
BLOBByte[]OracleLob
CHARStringOracleString
CLOBStringOracleLob
DATEDateTimeOracleDateTime
FLOATDecimalOracleNumber此数据类型是 NUMBER 数据类型的别名,其设计目的是使  OracleDataReader 返回 System.Decimal 或 OracleNumber,而不是浮点值。 使用该 .NET Framework 数据类型可能导致溢出。
INTEGERDecimalOracleNumber此数据类型是 NUMBER(38) 数据类型的别名,其设计目的是使  OracleDataReader 返回 System.Decimal 或 OracleNumber,而不是整数值。 使用该 .NET Framework 数据类型可能导致溢出。
INTERVAL YEAR TO MONTHInt32OracleMonthSpan
INTERVAL DAY TO SECONDTimeSpanOracleTimeSpan
LONGStringOracleString
LONG RAWByte[]OracleBinary
NCHARStringOracleString
NCLOBStringOracleLob
NUMBERDecimalOracleNumber使用该 .NET Framework 数据类型可能导致溢出。
NVARCHAR2StringOracleString
RAWByte[]OracleBinary
REF CURSOROracleDataReader 对象不支持 Oracle REF CURSOR 数据类型。
ROWIDStringOracleString
TIMESTAMPDateTimeOracleDateTime
TIMESTAMP WITH LOCAL TIME ZONEDateTimeOracleDateTime
TIMESTAMP WITH TIME ZONEDateTimeOracleDateTime
UNSIGNED INTEGERNumberOracleNumber此数据类型是 NUMBER(38) 数据类型的别名,其设计目的是使 OracleDataReader 返回 System.Decimal 或 OracleNumber,而不是无符号整数值。 使用该 .NET Framework 数据类型可能导致溢出。
VARCHAR2StringOracleString

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

Oracle 数据类型要绑定为参数的 DbType 枚举要绑定为参数的 OracleType 枚举Remarks(备注)
BFILEBFileOracle only allows binding a BFILE as a BFILE parameter. The .NET Data Provider for Oracle does not automatically construct one for you if you attempt to bind a non-BFILE value, such as byte[]  or OracleBinary.
BLOBBlobOracle only allows binding a BLOB as a BLOB parameter. The .NET Data Provider for Oracle does not automatically construct one for you if you attempt to bind a non-BLOB value, such as byte[]  or OracleBinary.
CHARAnsiStringFixedLengthChar
CLOBClobOracle only allows binding a CLOB as a CLOB parameter. The .NET Data Provider for Oracle does not automatically construct one for you if you attempt to bind a non-CLOB value, such as System.String or OracleString.
DATEDateTimeDateTime
FLOATSingle, Double, DecimalFloat, Double, NumberSize determines the System.Data.DBType and OracleType.
INTEGERSByte, Int16, Int32, Int64, DecimalSByte, Int16, Int32, NumberSize determines the System.Data.DBType and OracleType.
INTERVAL YEAR TO MONTHInt32IntervalYearToMonthOracleType is only available when using both Oracle 9i client and server software.
INTERVAL DAY TO SECONDObjectIntervalDayToSecondOracleType is only available when using both Oracle 9i client and server software.
LONGAnsiStringLongVarChar
LONG RAWBinaryLongRaw
NCHARStringFixedLengthNChar
NCLOBNClobOracle only allows binding a NCLOB as a NCLOB parameter. The .NET Data Provider for Oracle does not automatically construct one for you if you attempt to bind a non-NCLOB value, such as System.String or OracleString.
NUMBERVarNumericNumber
NVARCHAR2StringNVarChar
RAWBinaryRaw
REF CURSORCursor有关详细信息,请参阅 Oracle REF CURSOR
ROWIDAnsiStringRowid
TIMESTAMPDateTimeTimestamp只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。
TIMESTAMP WITH LOCAL TIME ZONEDateTimeTimestampLocal只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。
TIMESTAMP WITH TIME ZONEDateTimeTimestampWithTz只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。
UNSIGNED INTEGERByte, UInt16, UInt32, UInt64, DecimalByte, UInt16, Uint32, NumberSize 确定 System.Data.DBType 和 OracleType
VARCHAR2AnsiStringVarChar

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

请参阅

Oracle 数据类型映射 - ADO.NET | Microsoft Docs