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 | 十進位 | OracleNumber | 此資料類型是 NUMBER 資料類型的別名,並且已設計為能夠讓 OracleDataReader 傳回 System.Decimal 或 OracleNumber,而非浮點值。 使用 .NET Framework 資料型別會造成溢位。 |
INTEGER | 十進位 | 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 | 十進位 | OracleNumber | 使用 .NET Framework 資料型別會造成溢位。 |
NVARCHAR2 | String | OracleString | |
RAW | Byte[] | OracleBinary | |
REF CURSOR | Oracle REF CURSOR 資料類型不受 OracleDataReader 物件支援。 | ||
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),.NET Data Provider for Oracle 將不會自動為您建構。 | |
BLOB | Blob | Oracle 僅允許以 BLOB 參數來繫結 BLOB。 如果您嘗試繫結非 BLOB 值 (例如 byte[] 或 OracleBinary),.NET Data Provider for Oracle 將不會自動為您建構。 | |
CHAR | AnsiStringFixedLength | Char | |
CLOB | Clob | Oracle 僅允許以 CLOB 參數來繫結 CLOB。 如果您嘗試繫結非 CLOB 值 (例如 System.String 或 OracleString),.NET Data Provider for Oracle 將不會自動為您建構。 | |
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 | 二進位 | LongRaw | |
NCHAR | StringFixedLength | NChar | |
NCLOB | NClob | Oracle 僅允許以 NCLOB 參數來繫結 NCLOB。 如果您嘗試繫結非 NCLOB 值 (例如 System.String 或 OracleString),.NET Data Provider for Oracle 將不會自動為您建構。 | |
NUMBER | VarNumeric | Number | |
NVARCHAR2 | String | NVarChar | |
RAW | 二進位 | Raw | |
REF 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 |
除非輸入值是 Oracle 資料類型 (例如,OracleNumber 或 OracleString),否則 OracleParameter 物件之 Value 屬性所使用的 InputOutput、Output 和 ReturnValue ParameterDirection 值就是 .NET Framework 資料類型。 這並不適用於 REF CURSOR、BFILE 或 LOB 資料類型。
另請參閱
- Oracle 和 ADO.NET
- ADO.NET 概觀 \(部分機器翻譯\)