-----------------------------------Oracle Provider for OLE DB

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 =========================== 1.1 Unable to obtain native Oracle error using ADO and Oracle Provider for OLE DB. (Bug #1922789) 1.2 OraOLEDB cannot get values from string columns on 7.3.4 databases that have a character set different from client character set. (Bug #1905989) 1.3 Invalid page fault in module kernel32.dll@0137:BFF78053. (Bug #1789096) 1.4 Problem with IN/OUT stored procedure parameters. (Bug #1726980) 1.5 OraOLEDB supplied inconsistent metadata for a column. (Bug #1876296) 1.6 ORA-1461 error when inserting UTF8 data into NCHAR column. (Bug #1930023) 1.7 Multi-bytes data cannot be used for stored procedure arguments in ADO. (Bug #1921234) 1.8 Regsvr32 caused an invalid page fault on Windows 95 machine. (Bug #1937083) 2. BUG FIXES (in =========================== 2.1 Interface leak when inserting rows into a recordset using client cursor.

A value of 0 indicates that VARCHAR OUT parameters are padded with spaces.4 Properties are not set properly on a recordset returned from a stored procedure (Bug #1683372) 2.5 DB_E_DATAOVERFLOW for DBSCHEMA_COLUMNS schema rowset if the column is nullable (Bug #1571390) 3.3 Synonyms for stored procedures returning a REF Cursor does not work (Bug #1555773) 3.9 OraOLEDB sets RAW column to NULL during column update (Bug #1612285) 3.6 GetChunk on a CLOB column against UTF8 database returns incorrect data (Bug #1582093) 3.7. The default is 1.7.enables or disables the NULL termination of VARCHAR OUT parameters from stored procedures. Valid values are 0 (disabled) and 1 (enabled). The provider-specific attribute is: VCharNull .1. which indicates that VARCHAR OUT parameters are NULL terminated.3 Fraction gets truncated in FLOAT column when decimal separator is changed to comma (Bug #1633090) 2.5 Inserted value too large error (ORA-1401) while setting VARCHAR2 Column to NULL (Bug #1729642) 3.8 Executing SELECT statement with a CHAR column having only spaces causes a crash (Bug #1609027) 3. which is set in the same way as the other Connection String attributes are set.1.This causes the connection pooling to be disabled.2 IRowset::GetData call for 100 records after retrieving 1 record returns E_FAIL for forward only read only recordset (Bug #1623117) 2.1 Stored procedure OUT VARCHAR parameters are not NULL terminated (Bug #1230040) 3. (Bug #1545038) 2. BUG FIXES (in 8. If this attribute is not .4 GetChunk returns incorrect data from LONG RAW columns (Bug #1571160) 3.1. The default value for this attribute is located under the \HKEY_LOCAL_ MACHINE\SOFTWARE\ORACLE\OLEDB registry key. NEW CONNECTION STRING ATTRIBUTE (in 8.7 Intermittent access violation in OCIAttrGet (Bug #1590023) 3.0) ================================================= OraOLEDB introduces a new Connection String attribute.1.2 Unable to create triggers with :new and :old keywords (Bug #1540595) 3.0) ============================= 3.10 OraOLEDB truncates CHAR column trailing blanks against UTF8 database (Bug #1615235) 4.

0. 5. (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.1.0.0) =============================================== 5.0 release.0 release.4 Custom Properties for Commands OraOLEDB now provides a Custom Command Property Set having three Custom Properties. (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. However. 5. The client character set. 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. all the user needs to ensure is that the database character set is set to UTF8. It should be set to TRUE when the Stored Procedure is returning a rowset (REF CURSOR).7.1.7. BLOB. This support is dependent on the use of the NDatatype custom property described below as well as in the documentation. NVARCHAR and NCLOB) parameters to SQL statements. NEW FEATURES AND IMPROVEMENTS (in 8. if the parameter is to be used in a WHERE clause. 5. as always. Note that the LOB parameters can be IN. This support is dependent on the use of the SPPrmsLOB custom property described below. For performance. should be set to the native character set of the client machine. 5. Now. applications need to pad the stored procedure IN and IN OUT CHAR parameters with spaces explicitly. in that release. NVARCHAR or NCLOB).x) databases but are limited to only OUT against .6. The provider still supports this configuration but no longer requires it. These properties are: (a) PLSQLRSet: This property is functionally the same as the connection string attribute with the same name.1. For more information. Note that with this connection attribute enabled. OraOLEDB no longer requires the client character set to be set to UTF8.2 LOB parameters to Stored Procedures OraOLEDB now supports accesssing LOB parameters to Stored Procedures.3 NCHAR parameters to SQL statements OraOLEDB now supports binding N datatype (NCHAR. or NCLOB). the provider required the client character set to be set to UTF8 to enable its support. OUT and IN/OUT against Oracle8i ( Unicode Support OraOLEDB began supporting the Unicode character set against Oracle8i and Oracle8 databases with the 8. refer to the documentation that is installed with Oracle Provider for OLE DB.provided at connection time. as well as in the documentation. the default registry values are used. With 8. Consumers should begin using this property rather than the connection string attribute.

etc. Append and Delete methods. --+ . properties. 6. Default. Oracle8 and Oracle7). Instead.. The hint syntax. 5. Description column properties. Command property. Autoincrement. All table properties. LIMITATIONS AND KNOWN ISSUES ===================================== 6. The same holds for executing DDLs (CREATE TABLE. all the custom properties should be set to TRUE before the Command. 6. do not use ADO method AppendChunk on LONG/LONG RAW columns.0 supported returning rowset from Packaged Procedures/Functions only).4 The Trusted Oracle datatype MLSLABEL is not supported by the OraOLEDB driver.2 During a Local or Global Transaction. 5. GetObjectOwner. This feature is now supported against all Oracle databases (Oracle8i. is currently not supported. 6.0. and SetObjectOwner methods.7 ADOX Support The following ADOX objects. Not supported. insert or update the entire LONG/LONG RAW column using the ADO AddNew or Update method.1. For more information. as DDLs in Oracle perform an implicit Commit to the database. (OraOLEDB 8. */ as the optimizer hint syntax with the OraOLEDB driver. and methods are not supported by OraOLEDB: Catalog: Columns: Groups: Indexes: Keys: Procedures: Tables: Users: Views: Create. ROLLBACK or SAVEPOINT using the Command interface as they may affect the data consistency in the Rowsets. 6. Not supported. refer to the documentation that is installed with Oracle Provider for OLE DB.0. do not execute SQLs COMMIT. TIPS.5 Multiple Rowsets OraOLEDB now supports returning Multiple Rowsets from a Stored Procedure.) in this explicit transaction mode. Command property. Append and Delete methods.. Execute DDLs only in the Auto-Commit mode..Execute().Execute() and reset to FALSE after it. .6. 5. Not supported.. 6.Oracle8 (8. Not supported. When used. ALTER VIEW.x) databases. Please note that ADO requires custom properties to be set to TRUE before each Command.6 Non-Packaged Stored Procedures/Functions returning Rowset The Provider now supports returning rowset from Non-Packaged Stored Procedures/Functions.5 The Provider does not currently support Oracle8i Object datatypes.1 To improve performance.3 Use /*+ . collections.

could cause the rowset to be out of sync with the database. thus allowing for localized commits/aborts. refer to Oracle8i Application Developer's Guide . will error out if the UPDATE statement affects more than one row in the table. all commits and rollbacks (aborts) should be performed from the client-side (con.0.Commit or con. In these cases.Fundamentals and PL/SQL User's Guide and Reference.6 For overloaded PL/SQL stored procedures and functions. This is recommended when writing LOBs from the Command or the Recordset object. 6. 6. the connection string attribute.1. should be disabled. Autonomous Transactions have been introduced only in Oracle8i (8. Enabling transactions will allow consumers to rollback the entire write operation in the event of some failure. the database character set should be UTF8.9 OraOLEDB currently supports the Unicode feature against Oracle8i and Oracle8 databases but not against Oracle7. 6. For more information on Autonomous Transactions. DistribTx.6.10 To get full Unicode support. with an open rowset.7 The Command object currently errors out when updating LOBs on more than one row at a time..13 LOB parameters to Stored Procedures can be IN. This restriction is limited to LOBs (BLOB/CLOB) and not LONGs (LONG/LONG RAW).1.. If not. DistribTx. Such rowsets are currently limited to being read-only. For example: UPDATE SomeTable SET LobCol = ? WHERE . there is a possibility of a data loss.11 To enable creating rowsets using queries containing Oracle Database Links. 6. Using this feature. should be disabled. the transaction in the stored procedure is isolated from the main one. This is because the OLE DB specification currently does not have any provision for overloaded procedures/functions. 6.8 As most LOB write (INSERT and UPDATE) operations involve multiple write operations within the provider.14 OraOLEDB currently expects the case of the objects specified in the Schema Rowset Restriction to be exactly the same as in the . it is recommended that the transaction be enabled for such operations. 6.Abort). As OraOLEDB provides transactional capability on rowsets whose data is cached locally on the client-side.x) databases but are limited to only OUT against Oracle8 (8.x) databases. 6. By using this. performing an explicit commit/rollback in a stored procedure. 6. the PROCEDURE_PARAMETERS Schema Rowset returns the parameter information for only the first overloaded stored procedure/function.12 To enable Autonomous Transaction support.5) and are not available in the earlier releases of the RDBMS. The exception is if the user is making use of Autonomous Transactions in the stored procedure. Note that Commit/Rollback in a stored procedure should be performed with caution. consumers can execute Stored Procedures having COMMITs and/or ROLLBACKs. the connection string attribute. OUT and IN/OUT against Oracle8i (8.

"EMP". it does not support passing "emp" to access the table "EMP". "scott".database. ' Schemarowset created with no rows restrictions = Array(Empty. Empty) Set objRst = objCon. This issue will be resolved in the upcoming releases. For example: Dim restrictions As Variant . restrictions) ... "emp". "SCOTT".. Empty) Set objRst = objCon. ' Schemarowset contains table EMP owned by SCOTT restrictions = Array(Empty.OpenSchema(adSchemaTables. restrictions) . .. That is.OpenSchema(adSchemaTables...