Oracle Data Type Mappings

The following table lists Oracle data types and their mappings to the OracleDataReader.

Oracle data type

.NET Framework data type returned by OracleDataReader.GetValue

OracleClient data type returned by OracleDataReader.GetOracleValue

Remarks

BFILE

Byte[]

OracleBFile

 

BLOB

Byte[]

OracleLob

 

CHAR

String

OracleString

 

CLOB

String

OracleLob

 

DATE

DateTime

OracleDateTime

 

FLOAT

Decimal

OracleNumber

This data type is an alias for the NUMBER data type, and is designed so that the OracleDataReader returns a System.Decimal or OracleNumber instead of a floating-point value. Using the .NET Framework data type can cause an overflow.

INTEGER

Decimal

OracleNumber

This data type is an alias for the NUMBER(38) data type, and is designed so that the OracleDataReader returns a System.Decimal or OracleNumber instead of an integer value. Using the .NET Framework data type can cause an overflow.

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

Using the .NET Framework data type can cause an overflow.

NVARCHAR2

String

OracleString

 

RAW

Byte[]

OracleBinary

 

REF CURSOR

 

 

The Oracle REF CURSOR data type is not supported by the OracleDataReader object.

ROWID

String

OracleString

 

TIMESTAMP

DateTime

OracleDateTime

 

TIMESTAMP WITH LOCAL TIME ZONE

DateTime

OracleDateTime

 

TIMESTAMP WITH TIME ZONE

DateTime

OracleDateTime

 

UNSIGNED INTEGER

Number

OracleNumber

This data type is an alias for the NUMBER(38) data type, and is designed so that the OracleDataReader returns a System.Decimal or OracleNumber instead of an unsigned integer value. Using the .NET Framework data type can cause an overflow.

VARCHAR2

String

OracleString

 

The following table lists Oracle data types and the .NET Framework data types (System.Data.DbType and OracleType) to use when binding them as parameters.

Oracle data type

DbType enumeration to bind as a parameter

OracleType enumeration to bind as a parameter

Remarks

BFILE

 

BFile

Oracle 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.

BLOB

 

Blob

Oracle 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.

CHAR

AnsiStringFixedLength

Char

 

CLOB

 

Clob

Oracle 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.

DATE

DateTime

DateTime

 

FLOAT

Single, Double, Decimal

Float, Double, Number

Size determines the System.Data.DBType and OracleType.

INTEGER

SByte, Int16, Int32, Int64, Decimal

SByte, Int16, Int32, Number

Size determines the System.Data.DBType and OracleType.

INTERVAL YEAR TO MONTH

Int32

IntervalYearToMonth

OracleType is only available when using both Oracle 9i client and server software.

INTERVAL DAY TO SECOND

Object

IntervalDayToSecond

OracleType is only available when using both Oracle 9i client and server software.

LONG

AnsiString

LongVarChar

 

LONG RAW

Binary

LongRaw

 

NCHAR

StringFixedLength

NChar

 

NCLOB

 

NClob

Oracle 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.

NUMBER

VarNumeric

Number

 

NVARCHAR2

String

NVarChar

 

RAW

Binary

Raw

 

REF CURSOR

 

Cursor

For more information, see Oracle REF CURSORs.

ROWID

AnsiString

Rowid

 

TIMESTAMP

DateTime

Timestamp

OracleType is only available when using both Oracle 9i client and server software.

TIMESTAMP WITH LOCAL TIME ZONE

DateTime

TimestampLocal

OracleType is only available when using both Oracle 9i client and server software.

TIMESTAMP WITH TIME ZONE

DateTime

TimestampWithTz

OracleType is only available when using both Oracle 9i client and server software.

UNSIGNED INTEGER

Byte, UInt16, UInt32, UInt64, Decimal

Byte, UInt16, Uint32, Number

Size determines the System.Data.DBType and OracleType.

VARCHAR2

AnsiString

VarChar

 

The InputOutput, Output, and ReturnValue ParameterDirection values used by the Value property of the OracleParameter object are .NET Framework data types, unless the input value is an Oracle data type (for example, OracleNumber or OracleString). This does not apply to REF CURSOR, BFILE, or LOB data types.

See Also

Other Resources

Oracle and ADO.NET

ADO.NET Managed Providers and DataSet Developer Center