4. ODPI-C Data Type Support

The following table identifies each Oracle type from the enumeration dpiOracleTypeNum and the native C types from the enumeration dpiNativeTypeNum that can be used with them when creating variables using the method dpiConn_newVar().

Oracle Type

Supported Native C Types [*]

Notes

DPI_ORACLE_TYPE_BFILE

DPI_NATIVE_TYPE_LOB

Use method dpiVar_setFromLob() to set values.

DPI_ORACLE_TYPE_BOOLEAN

DPI_NATIVE_TYPE_BOOLEAN

This type is only usable in PL/SQL.

DPI_ORACLE_TYPE_BLOB

DPI_NATIVE_TYPE_LOB

Use method dpiVar_setFromLob() to set values.

DPI_ORACLE_TYPE_CHAR

DPI_NATIVE_TYPE_BYTES

Use method dpiVar_setFromBytes() to set values.

DPI_ORACLE_TYPE_CLOB

DPI_NATIVE_TYPE_LOB

Use method dpiVar_setFromLob() to set values.

DPI_ORACLE_TYPE_DATE

DPI_NATIVE_TYPE_TIMESTAMP

No relevant notes

DPI_ORACLE_TYPE_INTERVAL_DS

DPI_NATIVE_TYPE_INTERVAL_DS

No relevant notes

DPI_ORACLE_TYPE_INTERVAL_YM

DPI_NATIVE_TYPE_INTERVAL_YM

No relevant notes

DPI_ORACLE_TYPE_LONG_RAW

DPI_NATIVE_TYPE_BYTES

Use method dpiVar_setFromBytes() to set values.

DPI_ORACLE_TYPE_LONG_VARCHAR

DPI_NATIVE_TYPE_BYTES

Use method dpiVar_setFromBytes() to set values.

DPI_ORACLE_TYPE_NATIVE_DOUBLE

DPI_NATIVE_TYPE_DOUBLE

No relevant notes

DPI_ORACLE_TYPE_NATIVE_INT

DPI_NATIVE_TYPE_INT64

No relevant notes

DPI_ORACLE_TYPE_NATIVE_FLOAT

DPI_NATIVE_TYPE_FLOAT

No relevant notes

DPI_ORACLE_TYPE_NATIVE_UINT

DPI_NATIVE_TYPE_UINT64

No relevant notes

DPI_ORACLE_TYPE_NCHAR

DPI_NATIVE_TYPE_BYTES

Use method dpiVar_setFromBytes() to set values.

DPI_ORACLE_TYPE_NCLOB

DPI_NATIVE_TYPE_LOB

Use method dpiVar_setFromLob() to set values.

DPI_ORACLE_TYPE_NUMBER

DPI_NATIVE_TYPE_DOUBLE, DPI_NATIVE_TYPE_BYTES, DPI_NATIVE_TYPE_INT64, DPI_NATIVE_TYPE_UINT64

Use method dpiVar_setFromBytes() to set values when using DPI_NATIVE_TYPE_BYTES. Note that Oracle Database number values use a decimal format and that accurately transferring the value from the database can only be guaranteed with DPI_NATIVE_TYPE_BYTES. DPI_NATIVE_TYPE_INT64 and DPI_NATIVE_TYPE_UINT64 can only represent integers and DPI_NATIVE_TYPE_DOUBLE can only represent numbers accurately if they contain at most between 15 and 17 decimal digits. []

DPI_ORACLE_TYPE_NVARCHAR

DPI_NATIVE_TYPE_BYTES

Use method dpiVar_setFromBytes() to set values.

DPI_ORACLE_TYPE_OBJECT

DPI_NATIVE_TYPE_OBJECT

Use method dpiVar_setFromObject() to set values.

DPI_ORACLE_TYPE_RAW

DPI_NATIVE_TYPE_BYTES

Use method dpiVar_setFromBytes() to set values.

DPI_ORACLE_TYPE_ROWID

DPI_NATIVE_TYPE_ROWID

Use method dpiVar_setFromRowid() to set values.

DPI_ORACLE_TYPE_STMT

DPI_NATIVE_TYPE_STMT

Use method dpiVar_setFromStmt() to set values.

DPI_ORACLE_TYPE_TIMESTAMP

DPI_NATIVE_TYPE_TIMESTAMP, DPI_NATIVE_TYPE_DOUBLE

When using DPI_NATIVE_TYPE_DOUBLE the value corresponds to the number of seconds since Jan 1, 1970.

DPI_ORACLE_TYPE_TIMESTAMP_LTZ

DPI_NATIVE_TYPE_TIMESTAMP, DPI_NATIVE_TYPE_DOUBLE

When using DPI_NATIVE_TYPE_DOUBLE the value corresponds to the number of seconds since Jan 1, 1970.

DPI_ORACLE_TYPE_TIMESTAMP_TZ

DPI_NATIVE_TYPE_TIMESTAMP, DPI_NATIVE_TYPE_DOUBLE

When using DPI_NATIVE_TYPE_DOUBLE the value corresponds to the number of seconds since Jan 1, 1970.

DPI_ORACLE_TYPE_VARCHAR

DPI_NATIVE_TYPE_BYTES

Use method dpiVar_setFromBytes() to set values.