------------------------------------
Oracle Provider for OLE DB 8.1.7.2.0
------------------------------------
Copyright (C) Oracle Corporation 2001

This document provides information that supplements the Oracle Provider
for OLE DB documentation.


IMPORTANT INSTALLATION INFORMATION
==================================
The OraOLEDB provider, being a COM component, is NOT multiple Oracle
Home compliant. Only one version of OraOLEDB can exist on a machine at
a time.

If you have Oracle Provider for OLE DB installed on your machine,
deinstall that provider before installing the new provider.


Microsoft Visual Basic 6.0 Notes
================================
The Microsoft ActiveX Data Objects and Microsoft ActiveX Data Objects
Recordset libraries must be included as Project References.


Microsoft Visual C++ 6.0 Notes
==============================
OraOLEDB.h must be included in the relevant .cpp files in the VC++
project. Also, #define DBINITCONSTANTS needs to be added to one of
the .cpp files in the project.


1. BUG FIXES (in 8.1.7.2.0)
=============================

1.1  Interface leak when inserting rows in a recordset using client cursor.
     This causes the connection pooling to be disabled. (Bug #1545038)

1.2  IRowset::GetData call for 100 records after retrieving 1 record returns 
     E_FAIL for forward only read only recordset (Bug #1623117)

1.3  Fraction gets truncated in FLOAT column when decimal separator is 
     changed to comma (Bug #1633090)

1.4  Properties are not set properly on a recordset returned from a stored
     procedure (Bug #1683372)

1.5  Inserted value too large error (ORA-1401) while setting VARCHAR2 Column
     to NULL (Bug #1729642)


2. BUG FIXES (in 8.1.7.1.0)
=============================

2.1  Stored procedure OUT VARCHAR parameters are not NULL terminated 
     (Bug #1230040)

2.2  Unable to create triggers with :new and :old keywords (Bug #1540595)

2.3  Synonyms for stored procedures returning a REF Cursor does not work
     (Bug #1555773)

2.4  GetChunk returns incorrect data from LONG RAW columns (Bug #1571160)

2.5  DB_E_DATAOVERFLOW for DBSCHEMA_COLUMNS schema rowset if the column is 
     nullable (Bug #1571390)

2.6  GetChunk on a CLOB column against UTF8 database returns incorrect data 
     (Bug #1582093)

2.7  Intermittent access violation in OCIAttrGet (Bug #1590023)

2.8  Executing SELECT statement with a CHAR column having only spaces causes 
     a crash (Bug #1609027)

2.9  OraOLEDB sets RAW column to NULL during column update (Bug #1612285)

2.10 OraOLEDB truncates CHAR column trailing blanks against UTF8 database
     (Bug #1615235)


3. NEW CONNECTION STRING ATTRIBUTE (in 8.1.7.1.0)
=================================================

OraOLEDB introduces a new Connection String attribute, which is set in
the same way as the other Connection String attributes are set. The
provider-specific attribute is:

VCharNull - enables or disables the NULL termination of VARCHAR OUT
parameters from stored procedures. Valid values are 0 (disabled) and
1 (enabled). The default is 1 which indicates that VARCHAR OUT
parameters are NULL terminated. A value of 0 indicates that VARCHAR
OUT parameters are padded with spaces.

The default value for this attribute is located under the \\HKEY_LOCAL_
MACHINE\SOFTWARE\ORACLE\OLEDB registry key. If this attribute is not
provided at connection time, the default registry values are used.

Note that with this connection attribute enabled, applications need to
pad the stored procedure IN and IN OUT CHAR parameters with spaces
explicitly, if the parameter is to be used in a WHERE clause.

4. NEW FEATURES AND IMPROVEMENTS (in 8.1.7.0.0)
===============================================
4.1  Unicode Support

     OraOLEDB began supporting the Unicode character set against Oracle8i
     and Oracle8 databases with the 8.1.6.1.0 release. However, in that
     release, the provider required the client character set to be set
     to UTF8 to enable its support.

     With 8.1.7.0.0 release, OraOLEDB no longer requires the client character
     set to be set to UTF8. The provider still supports this configuration
     but no longer requires it. Now, all the user needs to ensure is that
     the database character set is set to UTF8. The client character set,
     as always, should be set to the native character set of the client
     machine.

     For more information, refer to the documentation that is installed
     with Oracle Provider for OLE DB.

4.2  LOB parameters to Stored Procedures

     OraOLEDB now supports accesssing LOB parameters to Stored Procedures.
     This support is dependent on the use of the SPPrmsLOB custom property
     described below and as well as in the documentation.

4.3  NCHAR parameters to SQL statements

     OraOLEDB now supports binding N datatype (NCHAR, NVARCHAR and NCLOB)
     parameters to SQL statements. This support is dependent on the use of
     the NDatatype custom property described below as well as in the
     documentation.

4.4  Custom Properties for Commands

     OraOLEDB now provides a Custom Command Property Set having three
     Custom Properties. These properties have been added to allow consumers
     to selectively enable certain features so as to limit the overhead
     of extra processing to only when required. These properties are:

     (a) PLSQLRSet: This property is functionally the same as the connection
         string attribute with the same name. It should be set to TRUE when
         the Stored Procedure is returning a rowset (REF CURSOR).
         For performance, Consumers should begin using this property rather
         than the connection string attribute.

     (b) NDatatype: This property should be set to TRUE if any of the
         parameters bound to the SQL are of Oracle's N datatypes
         (NCHAR, NVARCHAR or NCLOB).

     (c) SPPrmsLOB: This property should be set to TRUE if any of the
         parameters bound to the Stored Procedure are of Oracle's LOB
         datatypes (CLOB, BLOB, or NCLOB).
         Note that the LOB parameters can be IN, OUT and IN/OUT against
         Oracle8i (8.1.x) databases but are limited to only OUT against
         Oracle8 (8.0.x) databases.

     When used, all the custom properties should be set to TRUE before
     the Command.Execute() and reset to FALSE after it.

     Please note that ADO requires custom properties to be set to TRUE
     before each Command.Execute().

     For more information, refer to the documentation that is installed
     with Oracle Provider for OLE DB.

4.5  Multiple Rowsets

     OraOLEDB now supports returning Multiple Rowsets from a Stored
     Procedure.

4.6  Non-Packaged Stored Procedures/Functions returning Rowset

     The Provider now supports returning rowset from Non-Packaged Stored

     Procedures/Functions. (OraOLEDB 8.1.6.0.0 supported returning rowset
     from Packaged Procedures/Functions only). This feature is now
     supported against all Oracle databases (Oracle8i, Oracle8 and Oracle7).

4.7 ADOX Support

    The following ADOX objects, collections, properties, and methods are not
    supported by OraOLEDB:

    Catalog:    Create, GetObjectOwner, and SetObjectOwner methods.
    Columns:    Autoincrement, Default, Description column properties.
    Groups:     Not supported.
    Indexes:    Not supported.
    Keys:       Not supported.
    Procedures: Command property; Append and Delete methods.
    Tables:     All table properties.
    Users:      Not supported.
    Views:      Command property; Append and Delete methods.


5. TIPS, LIMITATIONS AND KNOWN ISSUES
=====================================
5.1  To improve performance, do not use ADO method AppendChunk on
     LONG/LONG RAW columns. Instead, insert or update the entire
     LONG/LONG RAW column using the ADO AddNew or Update method.

5.2  During a Local or Global Transaction, do not execute SQLs
     COMMIT, ROLLBACK or SAVEPOINT using the Command interface as
     they may affect the data consistency in the Rowsets. The same
     holds for executing DDLs (CREATE TABLE, ALTER VIEW, etc.)
     in this explicit transaction mode, as DDLs in Oracle perform
     an implicit Commit to the database. Execute DDLs only in the
     Auto-Commit mode.

5.3  Use /*+ ... */ as the optimizer hint syntax with the OraOLEDB
     driver. The hint syntax, --+ ... is currently not supported.

5.4  The Trusted Oracle datatype MLSLABEL is not supported by the
     OraOLEDB driver.

5.5  The Provider does not currently support Oracle8i Object datatypes.

5.6  For overloaded PL/SQL stored procedures and functions, the
     PROCEDURE_PARAMETERS Schema Rowset returns the parameter information
     for only the first overloaded stored procedure/function. This is
     because the OLE DB specification currently does not have any provision
     for overloaded procedures/functions.

5.7  The Command object currently errors out when updating LOBs on more
     than one row at a time.
     For example:
     UPDATE SomeTable SET LobCol = ? WHERE ...
     will error out if the UPDATE statement affects more than one row in

     the table. This restriction is limited to LOBs (BLOB/CLOB) and not
     LONGs (LONG/LONG RAW).

5.8  As most LOB write (INSERT and UPDATE) operations involve multiple
     write operations within the provider, it is recommended that the
     transaction be enabled for such operations. Enabling transaction
     will allow consumers to rollback the entire write operation in the
     event of some failure. This is recommended when writing LOBs
     from the Command or the Recordset object.

5.9  OraOLEDB currently supports the Unicode feature against Oracle8i
     and Oracle8 databases but not against Oracle7.

5.10 To get full Unicode support, the database character set should be
     UTF8. If not, there is a possibility of a data loss.

5.11 To enable creating rowsets using queries containing Oracle Database

     Links, the connection string attribute, DistribTx, should be disabled.
     Such rowsets are currently limited to being read-only.

5.12 To enable Autonomous Transaction support, the connection string
     attribute, DistribTx, should be disabled. Using this feature, consumers
     can execute Stored Procedures having COMMITs and/or ROLLBACKs.

     Note that Commit/Rollback in a stored procedure should be performed

     with caution. As OraOLEDB provides transactional capability on
     rowsets, whose data is cached locally on the client-side, performing
     an explicit commit/rollback in a stored procedure, with an open rowset,
     could cause the rowset to be out of sync with the database. In these
     cases, all commits and rollbacks (aborts) should be performed from the
     client-side (con.Commit or con.Abort). The exception is if the user

     is making use of Autonomous Transactions in the stored procedure.
     By using this, the transaction in the stored procedure is isolated
     from the main one; thus allowing for localized commits/aborts.
     Autonomous Transactions have been introduced only in Oracle8i (8.1.5)
     and are not available in the earlier releases of the RDBMS.

     For more information on Autonomous Transactions, refer to Oracle8i
     Application Developer's Guide - Fundamentals and PL/SQL User's Guide
     and Reference.

5.13 LOB parameters to Stored Procedures can be IN, OUT and IN/OUT
     against Oracle8i (8.1.x) databases but are limited to only OUT
     against Oracle8 (8.0.x) databases.

5.14 OraOLEDB currently expects the case of the objects specified in
     the Schema Rowset Restriction to be exactly the same as in the
     database. That is, it does not support passing "emp" to access
     the table "EMP". This issue will be resolved in the upcoming
     releases.

     For example:

     Dim restrictions As Variant
     ...
     ' Schemarowset contains table EMP owned by SCOTT
     restrictions = Array(Empty, "SCOTT", "EMP", Empty)
     Set objRst = objCon.OpenSchema(adSchemaTables, restrictions)
     ...
     ' Schemarowset created with no rows
     restrictions = Array(Empty, "scott", "emp", Empty)
     Set objRst = objCon.OpenSchema(adSchemaTables, restrictions)
     ...
E-mail this page
Printer View Printer View
Oracle Is The Information Company About Oracle | Oracle RSS Feeds | Careers | Contact Us | Site Maps | Legal Notices | Terms of Use | Privacy