This browser is no longer supported.

Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

Download Microsoft Edge More info about Internet Explorer and Microsoft Edge

Enhancements to the Microsoft OLE DB Provider for Oracle are designed to take advantage of significant technology improvements, but because the provider is dependent on a variety of release schedules, not all new features can be incorporated simultaneously. The resulting limitations follow.

Size of VARCHAR Type Column

In Oracle8, the size of the RAW and CHAR data types increased to 2000 bytes. This allowed the maximum size of a VARCHAR type column to increase from 2000 to 4000 bytes. The Oracle 7.3. x client software has no way to bind a parameter value larger than 2000 bytes.

Therefore, if you create a table with a VARCHAR type column of larger than 2000 bytes, you will be unable to perform parameterized inserts, updates, deletes, and queries against it with data that exceeds the 2000-byte limit of the client software. ORA-01026 errors will be returned. Data that is within the limits enforced by the Oracle client software will work properly.

To avoid this 2000-byte limit, you must upgrade your client software to Oracle8 (version 8.0.4.1.1c or later).

Reading System Tables

Some system tables returned by IDBSchemaRowset might not be accessible due to system access restrictions. When IDBSchemaRowset::GetRowset is called for a value of DBSCHEMA_TABLE that is a system table, an error may occur and E_FAIL is returned.

Limitations on Column-Name Size When Using DBCS

Because Oracle is based on multibyte character sets, this provider restricts the 30-byte limitation on column names to 15 when using the Double Byte Character Set.

Possibility of Unrecognized Duplicate Rowsets

This provider allows Oracle to add a ROWID column to SELECT statements, making each row uniquely identifiable in order to have an updatable rowset. When attempting to fetch rowsets (for example, by using the SELECT DISTINCT command), duplicate rowsets might not be recognized because the ROWID column makes each one unique.

Limitations of DBTYPE_VARNUMERIC

The range of numbers in Oracle exceeds the range of DBTYPE_VARNUMERIC. Numbers larger than those with an exponent of 127 or those with an exponent less than -128 cannot be represented by this provider.

Bookmarks

Bookmarks are not supported.

OLE DB Views

Views are not supported.

Errors When Using Oracle 7.x Servers

Using this provider against an Oracle 7.x server may produce an error when performing an outer join. In an outer join, all columns are potentially nullable; however, Oracle 7.x may report that a column in an outer join is non-nullable and therefore generate an error when a resulting column contains a null value. The workaround is to use Oracle 8.x servers.

Oracle Server Converts Empty Strings to Null Values

When updating an Oracle database using this provider, be aware that Oracle will convert empty strings to NULL. When using the ADO Update method, you may receive the error "The specified row could not be located for updating; Some values may have been changed since it was last read." (80040e38). This occurs because the Oracle server converts the empty string to NULL, but the ADO Recordset object stores the empty string.