Professional Documents
Culture Documents
Developers Guide
11g Release 2 (11.2) for Microsoft Windows
E17726-03
July 2013
Oracle Provider for OLE DB Developer's Guide, 11g Release 2 (11.2) for Microsoft Windows
E17726-03
Copyright 1999, 2013, Oracle and/or its affiliates. All rights reserved.
Contributors: Janis Greenberg, Eric Belden, Riaz Ahmed, Kiminari Akiyama, Neeraj Gupta, Sinclair Hsu,
Gopal Kirsur, Sunil Mushran, Rajendra Pingte, Helen Slattery, Valarie Moore, Vikhram Shetty, Sujith
Somanathan, Alex Keh, Christian Shay
This software and related documentation are provided under a license agreement containing restrictions on
use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your
license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license,
transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse
engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is
prohibited.
The information contained herein is subject to change without notice and is not warranted to be error-free. If
you find any errors, please report them to us in writing.
If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it
on behalf of the U.S. Government, the following notice is applicable:
U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software,
any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users
are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and
agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and
adaptation of the programs, including any operating system, integrated software, any programs installed on
the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to
the programs. No other rights are granted to the U.S. Government.
This software or hardware is developed for general use in a variety of information management
applications. It is not developed or intended for use in any inherently dangerous applications, including
applications that may create a risk of personal injury. If you use this software or hardware in dangerous
applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other
measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages
caused by use of this software or hardware in dangerous applications.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of
their respective owners.
Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks
are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD,
Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced
Micro Devices. UNIX is a registered trademark of The Open Group.
This software or hardware and documentation may provide access to or information on content, products,
and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly
disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle
Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your
access to or use of third-party content, products, or services.
Contents
Preface ................................................................................................................................................................ vii
Audience...................................................................................................................................................... vii
Documentation Accessibility .................................................................................................................... vii
Related Documents ................................................................................................................................... viii
Conventions ............................................................................................................................................... viii
1-1
1-1
1-2
1-3
1-3
1-4
Features of OraOLEDB
OraOLEDB Provider Specific Features ................................................................................................ 2-1
Data Types........................................................................................................................................... 2-1
Binary Data Types....................................................................................................................... 2-2
TIMESTAMP Data Types .......................................................................................................... 2-2
INTERVAL Data Types.............................................................................................................. 2-4
Data Source ......................................................................................................................................... 2-5
Compatibility with OLE DB Services....................................................................................... 2-5
Connecting to an Oracle Database ........................................................................................... 2-6
OraOLEDB-Specific Connection String Attributes ................................................................ 2-7
Default Attribute Values............................................................................................................ 2-8
Distributed Transactions............................................................................................................ 2-8
Enhanced Failover Capability ................................................................................................... 2-8
Operating System Authentication ............................................................................................ 2-9
Password Expiration .................................................................................................................. 2-9
VCharNull................................................................................................................................. 2-10
SPPrmDefVal ............................................................................................................................ 2-10
iii
OraOLEDB Sessions........................................................................................................................
Transactions ..............................................................................................................................
Commands .......................................................................................................................................
Stored Procedures ....................................................................................................................
Preparing Commands .............................................................................................................
Command Parameters.............................................................................................................
OraOLEDB Custom Properties for Commands ..................................................................
Stored Procedures and Functions Returning Rowsets .......................................................
Multiple Rowsets .....................................................................................................................
Statement Caching ...................................................................................................................
Metadata Caching ....................................................................................................................
Command Timeout and Cancel Method ..............................................................................
Rowsets.............................................................................................................................................
To Create Rowsets ...................................................................................................................
Updatability ..............................................................................................................................
Server Data on Insert Property ..............................................................................................
To Search for Rows with IRowsetFind::FindNext...............................................................
OraOLEDB-Specific Connection String Attributes for Rowsets .......................................
Tips for ADO Programmers ...................................................................................................
Schema Rowsets .......................................................................................................................
Date Formats.............................................................................................................................
Case of Object Names..............................................................................................................
LOB Support ....................................................................................................................................
Unicode Support .............................................................................................................................
Types of Unicode Encoding ...................................................................................................
How Oracle Unicode Support Works ...................................................................................
Unicode Support Setup ...........................................................................................................
Errors.................................................................................................................................................
OLEDB.NET Data Provider Compatibility .................................................................................
Using the OLEDB.NET Attribute in a Connection String..................................................
Using OraOLEDB Custom Properties...................................................................................
Updating Oracle with DataTable Changes ..........................................................................
Using OraOLEDB with Visual Basic .................................................................................................
Setting Up the Oracle Database ....................................................................................................
Setting Up the Visual Basic Project...............................................................................................
Provider-Specific Information
Data Type Mappings in Rowsets and Parameters ............................................................................
Properties Supported..............................................................................................................................
Data Source Properties .....................................................................................................................
DataSourceInfo Properties ...............................................................................................................
Initialization and Authorization Properties ..................................................................................
Session Properties .............................................................................................................................
Rowset Properties .............................................................................................................................
Rowset Property Implications..................................................................................................
Interfaces Supported...............................................................................................................................
Data Source ........................................................................................................................................
iv
2-10
2-11
2-11
2-11
2-12
2-12
2-12
2-15
2-15
2-18
2-18
2-19
2-19
2-19
2-20
2-21
2-21
2-21
2-22
2-22
2-23
2-24
2-24
2-24
2-24
2-25
2-25
2-25
2-26
2-26
2-26
2-27
2-27
2-28
2-28
A-1
A-2
A-2
A-2
A-4
A-5
A-5
A-8
A-8
A-9
Session.................................................................................................................................................
Command...........................................................................................................................................
Rowset.................................................................................................................................................
Multiple Results ..............................................................................................................................
Transaction Options........................................................................................................................
Custom Error Object .......................................................................................................................
MetaData Columns Supported ...........................................................................................................
OraOLEDB Tracing ...............................................................................................................................
Registry Setting for Tracing Calls ................................................................................................
A-9
A-9
A-9
A-10
A-10
A-10
A-10
A-11
A-11
Glossary
Index
vi
Preface
Based on an open standard, Oracle Provider for OLE DB (OraOLEDB) allows access to
Oracle Databases. This documentation describes OraOLEDB's provider-specific
features and properties.
This document describes the features of Oracle Database for Windows that apply to
the Windows 2000, Windows XP, and Windows Server 2003 operating systems.
This Preface contains these topics:
Audience
Documentation Accessibility
Related Documents
Conventions
Audience
Oracle Provider for OLE DB Developer's Guide is intended for programmers developing
applications to access an Oracle Database using Oracle Provider for OLE DB. This
documentation is also valuable to systems analysts, project managers, and others
interested in the development of database applications.
To use this document, you must be familiar with OLE DB and have a working
knowledge of application programming using Microsoft C/C++, Visual Basic, or
ActiveX Data Objects (ADO). Knowledge of Component Object Model (COM)
concepts are also useful.
Readers should also be familiar with the use of Structured Query Language (SQL) to
access information in relational database systems.
Documentation Accessibility
For information about Oracle's commitment to accessibility, visit the Oracle
Accessibility Program website at
http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.
Access to Oracle Support
Oracle customers have access to electronic support through My Oracle Support. For
information, visit
http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit
http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs if you are
hearing impaired.
vii
Related Documents
For more information, see these Oracle resources:
For information about Oracle error messages, see Oracle Database Error Messages.
Oracle error message documentation is available only in HTML. If you only have
access to the Oracle Documentation CD, you can browse the error messages by range.
Once you find the specific range, use your browser's "find in page" feature to locate the
specific message. When connected to the Internet, you can search for a specific error
message using the error message search feature of the Oracle online documentation.
Many of the examples in this book use the sample schemas of the seed database, which
is installed by default when you install Oracle. Refer to Oracle Database Sample Schemas
for information on how these schemas were created and how you can use them
yourself.
To download free release notes, installation documentation, white papers, or other
collateral, please visit the Oracle Technology Network (OTN). You must register
online before using OTN; registration is free and can be done at
http://www.oracle.com/technetwork/index.html
If you already have a username and password for OTN, then you can go directly to the
documentation section of the OTN Web site at
http://www.oracle.com/technetwork/documentation/index.html
Conventions
The following text conventions are used in this document:
viii
Convention
Meaning
boldface
italic
monospace
See Also:
ix
See Also:
1
Introduction to Oracle Provider for OLE DB
Overview of OLE DB
Overview of OraOLEDB
System Requirements
OraOLEDB Installation
Component Certifications
Overview of OLE DB
OLE DB is an open standard data access methodology which utilizes a set of
Component Object Model (COM) interfaces for accessing and manipulating different
types of data. These interfaces are available from various database providers.
OLE DB Design
The design of OLE DB centers around the concept of a consumer and a provider.
Figure 11 is an illustration of the OLE DB system. The consumer represents the
traditional client. The provider places data into a tabular format and returns it to the
consumer.
1-1
Overview of OraOLEDB
Overview of OraOLEDB
Oracle Provider for OLE DB (OraOLEDB) is an OLE DB data provider that offers high
performance and efficient access to Oracle data by OLE DB consumers.
In general, this developer's guide assumes that you are using OraOLEDB through OLE
DB or ADO.
OraOLEDB Installation
With the advent of the .NET framework, support has been provided for using the
OLEDB.NET Data Provider with OraOLEDB. With the proper connection attribute
setting, an OLEDB.NET Data Provider can utilize OraOLEDB to access Oracle
Database.
"OLEDB.NET Data Provider Compatibility" on
page 2-26 for further information on support for OLEDB.NET Data
Provider
See Also:
System Requirements
The following items are required on a system to use Oracle Provider for OLE DB:
Oracle Services for Microsoft Transaction Server release 11.2 or higher. This is
required for consumers using Microsoft Transaction Server (MTS) or COM+.
OraOLEDB Installation
Oracle Provider for OLE DB is included as part of your Oracle installation. It contains
the features and demos that illustrate how to use this product to solve real-world
problems.
See Also: The Oracle Database Installation Guide for Windows for
installation instructions
During the installation process, the files listed in Table 11 are installed on the system.
Some files have ver in their name to indicate the release version.
1-3
Component Certifications
Table 11
File
Description
Location
OraOLEDBver.dll
ORACLE_BASE\ORACLE_HOME\bin
OraOLEDBrfcver.dll
ORACLE_BASE\ORACLE_HOME\bin
OraOLEDBrmcver.dll
ORACLE_BASE\ORACLE_HOME\bin
OraOLEDBrstver.dll
Oracle rowset
ORACLE_BASE\ORACLE_HOME\bin
OraOLEDBgmrver.dll
ORACLE_BASE\ORACLE_HOME\bin
OraOLEDBlangver.dll
ORACLE_BASE\ORACLE_HOME\bin
OraOLEDBpusver.dll
Property descriptions
ORACLE_BASE\ORACLE_HOME\bin
OraOLEDButlver.dll
ORACLE_BASE\ORACLE_HOME\bin
OraOLEDBver.tlb
ORACLE_BASE\ORACLE_HOME\bin
OraOLEDB.h
ORACLE_BASE\ORACLE_
HOME\oledb\include
OraOLEDBver.lib
ORACLE_BASE\ORACLE_
HOME\oledb\lib
OraOLEDBlang.msb
ORACLE_BASE\ORACLE_
HOME\oledb\mesg
readme and
documentation files
ORACLE_BASE\ORACLE_
HOME\oledb\directory
sample files
Sample code
ORACLE_BASE\ORACLE_
HOME\oledb\samples
Component Certifications
Oracle provides support information for components on various platforms, lists
compatible client and database versions, and identifies patches and workaround
information.
Find the latest certification information at My Oracle Support (formerly
OracleMetaLink):
http://metalink.oracle.com/
You must register online before using My Oracle Support. After logging into My
Oracle Support, select Product Lifecycle from the left column. From the Products
Lifecycle page, click Certifications. Other Product Lifecycle options include Product
Availability, Desupport Notices, and Alerts.
2
2
Features of OraOLEDB
This chapter describes components of Oracle Provider for OLE DB (OraOLEDB) and
how to use the components to develop OLE DB consumer applications.
This chapter contains these topics:
Data Types
Data Source
OraOLEDB Sessions
Commands
Rowsets
LOB Support
Unicode Support
Errors
Data Types
The data types that OraOLEDB supports are listed in Table A1 with Unicode and
NonUnicode mappings.
OraOLEDB supports the Oracle data types described in the following sections.
BINARY_FLOAT
BINARY_DOUBLE
TIMESTAMP
Sample data illustrating insertion and retrieval operations using each of the
Timestamp data types.
A Visual Basic code example using the Timestamp data types.
Timestamp data types are mapped to the OLE DB DBTYPE_DBTIMESTAMP. The OLE
DB DBTYPE_DBTIMESTAMP data type does not have TIME ZONE information.
The Timestamp data types include:
TIMESTAMP
Data Insertion
For data insertion into a TIMESTAMP WITH TIME ZONE or TIMESTAMP WITH LOCAL
TIME ZONE column, the time zone setting of the client is used.
OLE DB Timestamp data type cannot provide the time zone information. For insert
operations, the default time zone from the client session is added to the TIMESTAMP
WITH TIME ZONE column data.
Data Retrieval
For data retrieval, TIME ZONE is dropped for TIMESTAMP WITH TIME ZONE columns,
but TIME ZONE is used for TIMESTAMP WITH LOCAL TIME ZONE columns.
The OLE DB Timestamp data type cannot store time zone information.
Fractional Second
Fractional second is not supported for TIMESTAMP data types binding with Command
objects.
Note that using ALTER SESSION to change time zone information does not change the
time zone information in the new and existing Recordsets, which use the client time
zone setting from the Regional options of the operating system. The maximum
fractional_seconds_precision of TIMESTAMP is 9 and the default precision is
6.
ADO Consumers
For the Timestamp data types, ADO consumers must specify the value of
CursorLocation as adUseServer and use Recordset for DML operations.
See Also:
adLockOptimistic
rec.AddNew Array("timestamp_column"), Array(DT)
update data
rec.Update Array("timestamp_column"), Array("07/07/07 07:17:17 AM")
...
For the INTERVAL YEAR TO MONTH column, the maximum year_precision is 9 and
the default is 2. For INTERVAL DAY TO SECOND column, the maximum day_
precision is 9 and the default is 2 and the maximum fractional_seconds_
precision is 9, the default is 6.
Note:
2-3
2 years and 3 months
+2-3
2 years and 3 months
-2-3
negative 2 years and 3 months
7 10:20:30.123456
7 days, 10 hours, 20 minutes, and 30.123456 seconds
+7 10:20:30.123456
7 days, 10 hours, 20 minutes, and 30.123456 seconds
-7 10:20:30.123456
negative 7 days, 10 hours, 20 minutes, and 30.123456 seconds
rec.CursorLocation = adUseServer
rec.ActiveConnection = con
rec.Open "select * from test_table2", con, adOpenDynamic, adLockOptimistic
rec.AddNew Array("year_to_month_column", "day_to_second_column"), _
Array("8-1", "3 20:30:10.12")
'update data
rec.Update Array("year_to_month_column", "day_to_second_column"), _
Array("2-3", "7 10:20:30.123456")
...
Data Source
A data source object in OraOLEDB is responsible for establishing the first connection
to the Oracle Database. To establish the initial connection, the consumer must use the
CoCreateInstance function to create an instance of the data source object. This
function requires important information about the provider: class ID of the provider
and executable context. The class ID of OraOLEDB is CLSID_OraOLEDB.
OraOLEDB is an in-process server. When calling CoCreateInstance, use the
CLSCTX_INPROC_SERVER macro. For example:
// create an instance of OraOLEDB data source object and
// obtain the IDBInitialize interface
hr = CoCreateInstance(CLSID_OraOLEDB, NULL,
CLSCTX_INPROC_SERVER, IID_IDBInitialize,
(void**)&pIDBInitialize);
The code snippet above does not enable OLEDB Services when instantiating the Data
Source object. To enable OLEDB services, see "Compatibility with OLE DB Services"
on page 2-5 below.
Note:
After the successful creation of an instance of a data source object, the consumer
application can initialize the data source and create sessions.
OraOLEDB supports connections to Oracle Databases release 8i and higher. To
connect to a specific database, the consumer is required to set the following properties
of the DBPROPSET_DBINIT property set:
enlistment, Client Cursor Engine (CCE), connection and session pooling, which can
enhance application performance, and others.
OLE DB Services can be used with OraOLEDB through C++/COM or ADO.
By default, the OLEDB_SERVICES registry entry for OraOLEDB is set, under the
CLSID of OraOLEDB, to 0xffffffff (that is, -1), which enables all services. Certain
OLE DB Services can also be disabled or enabled programmatically through the
DBPROP_INIT_OLEDBSERVICES property setting.
See Also:
http://msdn.microsoft.com/en-us/library/ms724518(VS.
85).aspx for more information on OLE DB Services and how to
enable or disable specific services
ADO Applications with OLE DB Services ADO automatically enables OLE DB Services.
Thus, ADO applications do not need any special code to use OLEDB Services.
C++/COM Applications with OLE DB Services For C++/COM applications, some additional
steps are needed to use OLE DB Services.
The following code snippet shows one way that C++/COM applications can enable
OLE DB Services. The code shows the OLE DB consumer creating an instance of the
CLSID_MSDAINITIALIZE class through CoCreateInstance(), obtaining the
IDataInitialize interface from that object, and then creating an OLE DB data
source object through that interface.
// Instantiate the CLSID_MSDAINITIALIZE class and request for the
// IID_IDataInitialize interface from it
hr = CoCreateInstance(CLSID_MSDAINITIALIZE, NULL, CLSCTX_INPROC_SERVER,
IID_IDataInitialize, (void**)&pIDataInitialize);
// Set properties, datasource name, userid, and password, etc.
...
// Create an OLEDB data source object using the interface obtained from the
// CLSID_MSDAINITIALIZE class.
hr = pIDataInitialize->CreateDBInstance(CLSID_OraOLEDB, NULL,
CLSCTX_INPROC_SERVER, NULL,IID_IDBInitialize,(IUnknown**)&pIDBInitialize);
...
// If connection/session pooling was enabled, pIDBInitialize->Release()
// releases the connection/session back to the pool.
// pIDataInitialize->Release() should not be called until the application no
// longer need to use connection/session pooling and the rest of
// the OLE DB Services that were enabled for the application.
//
pIDBInitialize->Release();
When connecting to a remote database, Data Source must be set to the correct net
service name which is the alias in the tnsnames.ora file. For more information, refer
to Oracle Net Services Administrator's Guide.
CacheType - specifies the type of cache used to store the rowset data on the client.
See "OraOLEDB-Specific Connection String Attributes for Rowsets" on page 2-21.
ChunkSize - specifies the size of LONG or LONG RAW column data stored in the
provider's cache. See "OraOLEDB-Specific Connection String Attributes for
Rowsets" on page 2-21.
DistribTX - enables or disables distributed transaction enlistment capability. See
"Distributed Transactions" on page 2-8.
FetchSize - specifies the size of the fetch array in rows. See "OraOLEDB-Specific
Connection String Attributes for Rowsets" on page 2-21.
OLEDB.NET - enables or disables compatibility with OLEDB.NET Data Provider.
See "OLEDB.NET Data Provider Compatibility" on page 2-26.
OSAuthent - specifies whether operating system authentication will be used
when connecting to an Oracle Database. See "Operating System Authentication"
on page 2-9.
PLSQLRSet - enables or disables the return of a rowset from PL/SQL stored
procedures. See "OraOLEDB Custom Properties for Commands" on page 2-12.
PwdChgDlg - enables or disables displaying the password change dialog box
when the password expires. See "Password Expiration" on page 2-9.
UseSessionFormat - specifies whether to use the default NLS session formats or
let OraOLEDB override some of these formats for the duration of the session.
Valid values are 0 (FALSE) and 1 (TRUE). The default is FALSE which lets
OraOLEDB override some of the default NLS session formats. If the value is TRUE,
OraOLEDB uses the default NLS session formats.
Note that this connection attribute does not appear under the \\HKEY_LOCAL_
MACHINE\SOFTWARE\ORACLE\KEY_HOMENAME\OLEDB registry key.
Distributed Transactions
The DistribTX attribute specifies whether sessions are enabled to enlist in
distributed transactions. Valid values are 0 (disabled) and 1 (enabled). The default is 1
which indicates that sessions are enabled for distributed transaction enlistments.
Applications using Microsoft Transaction Server must have DistribTX set to 1, the
default.
DBNotifications
The DBNotifications attribute specifies whether or not to subscribe to high
availability events. Valid values are 0 (FALSE) and 1 (TRUE). The default is FALSE,
which indicates that OraOLEDB does not subscribe to high availability events. If
this attribute is not provided at the connection time, then the default registry value
is used.
DBNotificationPort
The DBNotificationPort attribute specifies the port number, which is used to
listen to the database notifications. The valid value is an unsigned integer.
DBNotificationPort is effective only if the DBNotifications attribute is set
to TRUE, either through the connection string attribute or by registry entry. The
default for the DBNotificationPort attribute is 0, which implies that
OraOLEDB opens a valid port randomly. OraOLEDB does not validate the port
number, so it is the responsibility of the application to specify a valid port number.
DBNotifications
The DBNotifications registry entry specifies whether or not to subscribe to
high availability events. Valid values are 0 (FALSE) and 1 (TRUE). The default
value is FALSE, OraOLEDB does not subscribe. This registry entry value is used
when the DBNotifications connection string attribute is not set. It is located
under the \\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_
HOMENAME\OLEDB registry key.
DBPROP_AUTH_USERNAME to /
DBPROP_INIT_PROVIDERSTRING to OSAuthent=1;
Password Expiration
Oracle9i provides a Password Expiration feature which allows database
administrators to force users to change their passwords regularly. The PwdChgDlg
attribute enables or disables the displaying of the password change dialog box,
whenever a logon fails due to an expired password. When enabled, the provider
displays the dialog box to change the password. When disabled, the logon fails with
an error message. The valid values are 0 (disabled) and 1 (enabled). The default is 1
(enabled). For more information on the Password Expiration feature, see Oracle
Database Administrator's Guide.
VCharNull
The VCharNull attribute enables or disables the NULL termination of VARCHAR2
OUT parameters from stored procedures. Valid values are 0 (disabled) and 1 (enabled).
The default is 1, which indicates that VARCHAR2 OUT parameters are NULL
terminated. A value of 0 indicates that VARCHAR2 OUT parameters are padded with
spaces.
The default value for this attribute is located under the \\HKEY_LOCAL_
MACHINE\SOFTWARE\ORACLE\KEY_HOMENAME\OLEDB registry key, where
HOMENAME is the Oracle home. If this attribute is not provided at the connection time,
then the default registry value is 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.
SPPrmDefVal
The SPPrmDefVal attribute specifies whether to use the default value or a NULL
value if the application has not specified a stored procedure parameter value. Valid
values are 0 (FALSE) and 1 (TRUE). The default is FALSE, which enables OraOLEDB
to pass a NULL value. If the value is TRUE, then OraOLEDB uses the default value.
The default value for this attribute is located under the \\HKEY_LOCAL_
MACHINE\SOFTWARE\ORACLE\KEY_HOMENAME\OLEDB registry key. If this attribute
is not provided at connection time, then the default registry value is used.
OraOLEDB Sessions
An OraOLEDB session object represents a single connection to an Oracle Database.
The session object exposes the interfaces that allow data access and manipulation.
The first session created on the initialized data source inherits the initial connection
established by IDBInitialize::Initialize(). Subsequent sessions that are
created establish their own independent connections to the particular Oracle Database
specified by the data source properties.
Each session object also defines a transaction space for a data source. All command
and rowset objects created from a particular session object are part of the transaction
of that session.
After all references to the session object are released, the session object is removed
from memory and the connection is dropped.
Transactions
OraOLEDB supports local and distributed transactions, which provide explicit commit
and abort transactional operations.
OraOLEDB does not support nested transactions. In addition, a local transaction
cannot be started if the session is currently enlisted in a distributed transaction. This
also applies to distributed transactions if the session is currently enlisted in a local
transaction.
Local Transactions OraOLEDB supports the ITransactionLocal interface for explicit
transactions. By default, OraOLEDB is in an autocommit mode, meaning that each
unit of work done on the database is automatically or implicitly committed. With the
use of the ITransactionLocal interface, consumers may explicitly start a
transaction for a particular session, allowing a unit of work to be explicitly committed
or aborted by the consumer.
OraOLEDB supports the Read Committed (Cursor Stability) isolation level. In this
level, the changes made by other transactions are not visible until those transactions
are committed.
Distributed Transactions OraOLEDB consumers must install Oracle Services for
Microsoft Transaction Server (MTS) release 10.2 or higher to be able to participate in
Microsoft Transaction Server (or COM+) transactions or to enlist in a distributed
transaction coordinated by Microsoft Distributed Transaction Coordinator (MS DTC).
For setup and configuration information on Oracle Services for MTS, see Oracle
Services for Microsoft Transaction Server Developer's Guide.
OraOLEDB ignores IsoLevel, IsoFlags, and pOtherOptions parameters when
ITransactionJoin::JoinTransaction() is called. These options must be
provided when the consumer acquires a transaction object from MS DTC with the
ITransactionDispenser::BeginTransaction() method call.
However, if IsoFlags is nonzero, then XACT_E_NOISORETAIN is returned.
Commands
OraOLEDB supports ANSI SQL as supported by Oracle Database and the ODBC SQL
syntax.
Stored Procedures
When executing an Oracle PL/SQL stored procedure using a command, use Oracle
native syntax or the ODBC procedure call escape sequence in the command text:
Preparing Commands
OraOLEDB validates and fetches the metadata only for SELECT SQL statements.
Command Parameters
When using Oracle ANSI SQL, parameters in the command text are preceded by a
colon. In ODBC SQL, parameters are indicated by a question mark (?).
OraOLEDB supports input, output, and input and output parameters for PL/SQL
stored procedures and stored functions. OraOLEDB supports input parameters for
SQL statements.
Note:
PLSQLRSet
ORAPROP_PLSQLRSet
NDatatype
ORAPROP_NDatatype
SPPrmsLOB
ORAPROP_SPPrmsLOB
AddToStmtCache
ORAPROP_AddToStmtCache
PLSQLRSet
This property is similar to the PLSQLRSet connection string attribute.
The property specifies whether OraOLEDB must return a rowset from the PL/SQL
stored procedure. If the stored procedure, provided by the consumer, returns a rowset,
PLSQLRSet must be set to TRUE (enabled). This property should be set to FALSE after
the command has been run. By default, the property is set to FALSE (disabled).
Consumers should use the property over the attribute, as the property can be set at the
command object rather than at the session. By setting it at the command object, the
consumer is able to set the property only for the command object executing stored
procedures which are returning rowsets. With the attribute, the consumer needed to
set it even if only one of many stored procedures being executed by the ADO
application returned a rowset. The use of this property should provide a performance
boost to applications making use of the attribute previously.
Example: Setting the Custom Property PLSQLRSet
Dim objRes As NEW ADODB.Recordset
Dim objCon As NEW ADODB.Connection
Dim objCmd As NEW ADODB.Command
....
objCmd.ActiveConnection = objCon
objCmd.CommandType = adCmdText
' Enabling the PLSQLRSet property indicates to the provider
' that the command returns one or more rowsets
objCmd.Properties("PLSQLRSet") = TRUE
NDatatype
This property allows the consumers to specify whether any of the parameters bound
to the command are of Oracle's N data types (NCHAR, NVARCHAR or NCLOB). This
information is required by OraOLEDB to detect and bind the parameters. This
property should not be set for commands executing SELECT statements. However,
this property must be set for all other SQL statements, such as INSERT, UPDATE, and
DELETE.
The use of this property should be limited to SQL statements containing parameters of
N data type as setting it incurs a processing overhead of at least one round-trip to the
database. By default, this property is set to FALSE.
Note: OraOLEDB does not support parameters of N data types in
the WHERE clause of SQL statements.
Note:
' It is a good idea to disable the property after execute as the same command
' object may be used for a different SQL statement
objCmd.Properties("NDatatype") = FALSE
SPPrmsLOB
This property allows the consumer to specify whether one or more of the parameters
bound to the stored procedures are of Oracle's LOB data type (CLOB, BLOB, or NCLOB).
OraOLEDB requires this property to be set to TRUE, to fetch the parameter list of the
stored procedure prior to execution. The use of this property limits the processing
overhead to stored procedures having one or more LOB data type parameters. This
property should be set to FALSE after the command has been executed. By default, the
property is set to FALSE.
Consumers are required to use the ODBC procedure call
escape sequence to call stored procedures or functions having LOB
data type parameters.
Note:
AddToStmtCache
This property allows the consumer to cache the executed statements when the
property is set to TRUE and statement caching is enabled. If the statement caching is
disabled or if this property is set to FALSE, then the executed statement is not cached.
This property is ignored if statement caching is disabled. Statement caching can be
enabled by setting the StmtCacheSize connection string attribute to a value greater
than zero. This property provides a way to selectively add statements to the cache
when statement caching is enabled. By default, the property is set to TRUE.
Multiple Rowsets
OraOLEDB supports returning more than one rowset from a stored procedure.
Consumers can use this feature to access all the REF CURSORs being returned by a
stored procedure.
END Employees;
ADO Program
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Con
Rst1
Rst2
Rst3
Cmd
Prm1
Prm2
As
As
As
As
As
As
As
New
New
New
New
New
New
New
ADODB.Connection
ADODB.Recordset
ADODB.Recordset
ADODB.Recordset
ADODB.Command
ADODB.Parameter
ADODB.Parameter
Con.Provider = "OraOLEDB.Oracle"
Con.ConnectionString = "Data Source=MyOraDb;" & _
"User ID=scott;Password=tiger;"
Con.Open
Cmd.ActiveConnection = Con
' Although Employees.GetEmpRecords() takes four parameters, only
' two need to be bound because Ref cursor parameters are automatically
' bound by the provider.
Set Prm1 = Cmd.CreateParameter("Prm1", adSmallInt, adParamInput, , 30)
Cmd.Parameters.Append Prm1
Set Prm2 = Cmd.CreateParameter("Prm2", adSmallInt, adParamOutput)
Cmd.Parameters.Append Prm2
' Enable PLSQLRSet property
Cmd.Properties ("PLSQLRSet") = TRUE
' Stored Procedures returning resultsets must be called using the
' ODBC escape sequence for calling stored procedures.
Cmd.CommandText = "{CALL Employees.GetEmpRecords(?, ?)}"
' Get the first recordset
Set Rst1 = Cmd.Execute
' Disable PLSQLRSet property
Cmd.Properties("PLSQLRSet") = FALSE
' Get the second recordset
Set Rst2 = Rst1.NextRecordset
' Just as in a stored procedure, the REF CURSOR return value must
' not be bound in a stored function.
Prm1.Value = 7839
Prm2.Value = 0
' Enable PLSQLRSet property
Cmd.Properties("PLSQLRSet") = TRUE
' Stored Functions returning resultsets must be called using the
' ODBC escape sequence for calling stored functions.
Cmd.CommandText = "{CALL Employees.GetDept(?, ?)}"
' Get the rowset
Set Rst3 = Cmd.Execute
' Disable PLSQLRSet
Cmd.Properties ("PLSQLRSet") = FALSE
' Clean up
Rst1.Close
Rst2.Close
Rst3.Close
Statement Caching
Statement caching eliminates the need to parse each SQL or PL/SQL statement before
execution, by caching server cursors created during the initial statement execution.
Subsequent executions of the same statement can reuse the parsed information from
the cursor, and then execute the statement without reparsing, for better performance.
To see performance gains from statement caching, Oracle recommends caching only
those statements that will be repeatedly executed. Furthermore, SQL or PL/SQL
statements should use parameters rather than literal values. This will enable you to
take full advantage of statement caching. This is because parsed information from
parameterized statements can be reused, even if the parameter values change in
subsequent executions. However, if the literal values in the statements are different,
the parsed information cannot be reused unless the subsequent statements also have
the same literal values.
StmtCacheSize Connection String Attribute
This attribute enables or disables OraOLEDB statement caching. By default, this
attribute is set to 10 (enabled). If it is set to a value greater than 0, OraOLEDB
statement caching is enabled and the value specifies the maximum number of
statements that can be cached for a connection.
After a connection has been cached to the specified maximum cache size, the cursor
least recently used is freed to make room to cache the newly-created cursor. This value
should not be greater than the value of the OPEN_CURSORS parameter set in the
init.ora database configuration file.
AddToStmtCache Command Property
This property is relevant only when statement caching is enabled. If statement caching
is enabled and this property is set to true (default), then statements are added to the
cache when they are executed. If statement caching is disabled or if this property is set
to false, then the executed statement is not cached.
Enabling Statement Caching Through the Registry
To enable statement caching by default for all OraOLEDB applications running in a
system without changing the application, set the registry key of \\HKEY_LOCAL_
MACHINE\SOFTWARE\ORACLE\KEY_HOMENAME\OLEDB\StmtCacheSize to a value
greater than 0. Here, HOMENAME refers to the appropriate Oracle home. This value
specifies the number of cursors that are to be cached on the server. By default, it is set
to 10.
Connections and Statement Caching
Statement caching is managed separately for each connection. Therefore, for running
the same statement on different connections, you need to parse once for each
connection and cache a separate cursor for each connection.
Metadata Caching
This feature minimizes the retrieval of metadata for SELECT statements by caching the
metadata during the initial statement execution. Subsequent executions of the same
statement can reuse the cached metadata information for better performance. To see
performance gains from metadata caching, Oracle recommends caching only those
statements that are executed repeatedly.
Metadata caching is managed separately for each connection.
Therefore, to run the same statement on different connections, the
metadata must be cached once for each connection.
Note:
Rowsets
This section discusses using Rowsets with OraOLEDB.
To Create Rowsets
OraOLEDB supports IOpenRowset::OpenRowset and ICommand::Execute for
creating rowsets.
The pTableID parameter must contain a DBID structure that specifies a base table
or a view.
The DBID structure's eKind member must be set to DBKIND_GUID_NAME,
DBKIND_NAME, or DBKIND_PGUID_NAME.
The DBID structure's uName member must specify the base table or view name as
a Unicode character string. It cannot be NULL.
The pIndexID parameter of OpenRowset must be NULL.
Value
Description
update
delete
insert
The following ADO code sample sets the Updatability property on a command
object to allow insert, delete, and update operations on the rowset object.
Dim Cmd As New ADODB.Command
Dim Rst As New ADODB.Recordset
Dim Con As New ADODB.Connection
...
Cmd.ActiveConnection = Con
Cmd.CommandText = "SELECT * FROM emp"
Cmd.CommandType = adCmdText
cmd.Properties("IRowsetChange") = TRUE
Cmd.Properties("Updatability") = 7
' creates an updatable rowset
Set Rst = cmd.Execute
Updatability
OraOLEDB supports both immediate and deferred update mode. However, insert and
update operations cannot be deferred when the operation changes a nonscalar column,
such as LONG, BLOB, or CLOB. When nonscalar column values are changed in a
deferred update mode, the entire row is transmitted to the database as though the
operation was in an immediate update mode. In addition, these operations cannot be
undone with the Undo method (ADO) or IRowsetUpdate::Undo(). However, if
they are in a transaction, they can be rolled back with RollbackTrans method
(ADO) or ITransactionLocal::Abort().
Rowsets created using queries with joins are updatable by OraOLEDB only with the
Client Cursor Engine enabled. C/C++ OLE DB consumers must enable this service to
make these rowsets updatable. ADO consumers must specify the CursorLocation
as adUseClient to make these rowsets updatable.
For example:
Dim objCon As New ADODB.Connection
Dim objRst As New ADODB.Recordset
objCon.Provider = "OraOLEDB.Oracle"
objCon.Open "MyOraDb", "scott", "tiger"
objRst.CursorLocation = adUseClient
'ADO Client Cursor
objRst.Open "select ename, dname " & _
"from emp, dept " & _
"where emp.deptno = dept.deptno", _
objCon, adOpenStatic, adLockOptimistic, adCmdText
CacheType - specifies the type of caching used by the provider to store rowset
data. OraOLEDB provides two caching mechanisms:
Memory - The provider stores all the rowset data in-memory. This caching
mechanism provides better performance at the expense of higher memory
utilization. The default is Memory.
File - The provider stores all the rowset data on disk. This caching mechanism
limits memory consumption at the expense of performance.
ChunkSize - This attribute specifies the size, in bytes, of the data in LONG and
LONG RAW columns fetched and stored in the provider cache. Providing a high
value for this attribute improves performance, but requires more memory to store
the data in the rowset. Valid values are 1 to 65535. The default is 100.
FetchSize - specifies the number of rows the provider will fetch at a time (fetch
array). It must be set on the basis of data size and the response time of the
network. If the value is set too high, then this could result in more wait time
during the execution of the query. If the value is set too low, then this could result
in many more round trips to the database. Valid values are 1 to 429,496, and
296. The default is 100.
DeferUpdChk - The DeferUpdChk attribute specifies whether or not to defer the
updateability check. This supports updating ADO read-only disconnected
rowsets. Valid values are 0 (FALSE) and 1 (TRUE). The default is FALSE, which
implies that OraOLEDB does not defer the check. If this attribute is not provided
at the connection time, then the default registry value is used.
The default attribute values are set in the registry. For more information, see "Default
Attribute Values" on page 2-8. The following ADO code example overrides the default
attribute values:
Dim con As ADODB.Connection
Set con = NEW ADODB.Connection
con.ConnectionString = "Provider=OraOLEDB.Oracle;User ID=scott;" & _
"Password=tiger;Data Source=MyOraDB;" & _
"FetchSize=200;CacheType=File;"
con.Open
Schema Rowsets
The schema rowsets available through Oracle Provider for OLE DB are:
DBSCHEMA_COLUMNS
DBSCHEMA_INDEXES
DBSCHEMA_SCHEMATA
DBSCHEMA_VIEWS
DBSCHEMA_TABLES
DBSCHEMA_FOREIGN_KEYS
DBSCHEMA_PRIMARY_KEYS
DBSCHEMA_PROCEDURES
DBSCHEMA_PROCEDURE_PARAMETERS
Date Formats
The date format for the Oracle session cannot be set using the ALTER SESSION SET
NLS_DATE_FORMAT command. In Visual Basic, date formats are controlled by the
Regional Settings properties in Windows Control Panel. For more information on
Visual Basic date formats, refer to your Visual Basic documentation.
For Oracle Provider for OLE DB, if the Connection property UseSessionFormat is
FALSE, which is a default value, then NLS_DATE_FORMAT is fixed for the session to
'YYYY-MM-DD HH24:MI:SS' by the provider. If you pass the date to Oracle
Database as a string, the date must be in the 'YYYY-MM-DD HH24:MI:SS' format. If
UseSessionFormat is TRUE, then NLS_DATE_FORMAT is not fixed by Oracle
Provider for OLE DB and the default session NLS_DATE_FORMAT is used. For
example:
SELECT * FROM EMP WHERE HIREDATE > '1981-06-15 17:32:12'
To use a different format, you need to use the SQL function, TO_DATE(), to specify
the format for dates passed as strings. For example:
SELECT * FROM EMP WHERE HIREDATE > TO_DATE('15-JUN-81', 'DD-MON-YY')
However, for dates passed as parameters, the date format is controlled by ADO, which
is controlled by the Regional Settings in Windows Control Panel. In this case, TO_
DATE() should not be used. For example:
Private Sub Command1_Click()
Dim objCon As New ADODB.Connection
Dim objCmd As New ADODB.Command
Dim objRst As New ADODB.Recordset
Dim pDate As New ADODB.Parameter
objCon.Provider = "OraOLEDB.Oracle"
objCon.Open "MyOraDb", "scott", "tiger"
Set pDate = objCmd.CreateParameter("pDate", adDate, adParamInput)
objCmd.Parameters.Append pDate
objCmd.CommandText = _
"SELECT * FROM EMP WHERE HIREDATE > ?"
objCmd.ActiveConnection = objCon
objCmd.CommandType = adCmdText
pDate.Value = "06/15/1981"
Set objRst = objCmd.Execute
...
End Sub
will execute successfully if the table name in the database is Emp. Double quotes
preserve the case of the object names in Oracle Database.
LOB Support
The ISequentialStream interface is supported for all LONG, LONG RAW, and LOB
(BLOB, CLOB, NCLOB, and BFILE) columns. The consumer can use this interface to
read and write to all the LOB columns, except BFILE which is read-only. To have read
and write access to these columns, the SELECT SQL statement used to create the
rowset should not contain a join.
Although most of the LOB columns in an Oracle Database
support up to 4 GB of data storage, ADO limits the maximum
column size to 2 GB.
Note:
Columns having the BFILE data type are not updatable in the Rowset interface.
However, these columns can be updated using the command interface, if the update is
limited to modifying the directory and name of the external file pointed to by the
BFILE column. For example:
INSERT INTO topomaps (areanum, topomap)
VALUES (158, BFILENAME('mapdir', 'topo158.tps'))
For more information on LOBs, see Oracle Database SecureFiles and Large Objects
Developer's Guide.
Unicode Support
OraOLEDB supports the Unicode character set. Using this feature, consumers can use
OraOLEDB to access data in multiple languages on the same client computer. It can be
especially useful in creating global Internet applications supporting as many
languages as the Unicode standard entails. For example, you can write a single Active
Server Page (ASP) application that accesses an Oracle9i Database to dynamically
generate contents in Japanese, Arabic, English, Thai, and so on.
Note:
See "Data Type Mappings in Rowsets and Parameters" on page A-1 for further
information.
If the character set of your database is not UTF8, you need to create a new database
with the UTF8 character set and import your data into it. See Oracle Database
Administrator's Guide for more information.
See Also: Oracle Database Globalization Support Guide for general
information
Errors
OLE and COM objects report errors through the HRESULT return code of the object
member functions. An OLE/COM HRESULT return code is a bit-packed structure.
OLE provides macros that dereference structure members. OraOLEDB exposes
IErrorLookup to retrieve information about an error.
All objects support extended error information. For this, the consumer must instantiate
the OLE DB Extended Error object followed by calling the method
GetErrorDescription() to get the error text.
// Instantiate OraOLEDBErrorLookup and obtain a pointer to its
//
IErrorLookup interface
CoCreateInstance(CLSID_OraOLEDBErrorLookup, NULL, CLSCTX_INPROC_SERVER,
IID_IErrorLookup, (void **)&pIErrorLookup)
//Call the method GetErrorDescription() to get the full error text
pIErrorLookup->GetErrorDescription()
The OraOLEDB provider returns the entire error stack in one text block.
For ADO users, the following example applies:
Dim oerr As ADODB.Error
For Each oerr in con.Errors
MsgBox "Error: " & oerr.Description & vbCrLf _
& "Source: " & oerr.Source
Next
Both SPPrmsLOB and NDatatype connection string attributes are set to False by
default if they are not specified.
Setting either of these connection string attributes to True incurs additional
processing overhead when executing commands with parameters. For this reason,
before setting either attribute to True, see "OraOLEDB Custom Properties for
Commands" on page 2-12.
3.
After the emp table has been created in the scott account, you need to create the
PL/SQL package that contains the stored procedure and function that are run in the
Visual Basic example.
Step 2 Create the PL/SQL package:
1. Connect as username scott with the password tiger.
2.
Note:
2.
Make sure that the Microsoft ActiveX Data Objects 2.1 Library and Microsoft
ActiveX Data Objects Recordset 2.1 Library are included as Project References.
3.
Add two command buttons to the form. One of the buttons will run the code to
execute the PL/SQL procedure GetEmpRecords. The other will run the code to
execute the PL/SQL function GetDept.
4.
Add the following code to the Click subroutine of the button that will run the
code to execute the PL/SQL procedure GetEmpRecords.
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Oracon As ADODB.Connection
recset As New ADODB.Recordset
cmd As New ADODB.Command
param1 As New ADODB.Parameter
param2 As New ADODB.Parameter
objErr As ADODB.Error
Message, Title, Default, EmpNoValue
Default = "7654"
On Error GoTo err_test
EmpNoValue = InputBox(Message, Title, Default)
If EmpNoValue = "" Then Exit Sub
If EmpNoValue < 5000 Or EmpNoValue > 9000 Then EmpNoValue = 7654
Set Oracon = CreateObject("ADODB.Connection")
Oracon.ConnectionString = "Provider=OraOLEDB.Oracle;" & _
"Data Source=exampledb;" & _
"User ID=scott;" & _
"Password=tiger;"
Oracon.Open
Set cmd.ActiveConnection = Oracon
Set param1 = cmd.CreateParameter("param1", adSmallInt, adParamInput, ,
EmpNoValue)
cmd.Parameters.Append param1
Set param2 = cmd.CreateParameter("param2", adSmallInt, adParamOutput)
cmd.Parameters.Append param2
' Enable PLSQLRSet property
Cmd.Properties ("PLSQLRSet") = TRUE
cmd.CommandText = "{CALL Employees.GetDept(?, ?)}"
Set recset = cmd.Execute
' Disable PLSQLRSet property
Cmd.Properties ("PLSQLRSet") = FALSE
MsgBox "Number: " & EmpNoValue & "
Exit Sub
err_test:
MsgBox Error$
For Each objErr In Oracon.Errors
MsgBox objErr.Description
Next
Oracon.Errors.Clear
Resume Next
5.
Add the following code to the Click subroutine of the button that will run the
code to execute the PL/SQL function GetDept.
Dim
Dim
Dim
Dim
Dim
Dim
Oracon
recset
cmd As
param1
param2
objErr
As ADODB.Connection
As New ADODB.Recordset
New ADODB.Command
As New ADODB.Parameter
As New ADODB.Parameter
As ADODB.Error
Run the project and check the results. For example, if you choose the Get
Employee Records by Dept button, then you would see a dialog box requesting
that you enter a department number.
After you have entered a department number and clicked OK, another dialog box
displays employee names and numbers from that department.
A
A
Provider-Specific Information
This appendix describes OLE DB information that is specific to Oracle Provider for
OLE DB. For generic OLE DB information that includes a detailed listing of all OLE
DB properties and interfaces, see the Microsoft OLE DB Programmer's Reference Guide.
This appendix contains these topics:
Properties Supported
Interfaces Supported
OraOLEDB Tracing
BFILE
DBTYPE_BYTES
DBTYPE_BYTES
BINARY_FLOAT
DBTYPE_R4
DBTYPE_R4
BINARY_DOUBLE
DBTYPE_R8
DBTYPE_R8
BLOB
DBTYPE_BYTES
DBTYPE_BYTES
CHAR
DBTYPE_STR
DBTYPE_WSTR
CLOB
DBTYPE_STR
DBTYPE_WSTR
DATE
DBTYPE_DBTIMESTAMP
DBTYPE_DBTIMESTAMP
FLOAT
DBTYPE_R8
DBTYPE_R8
INTERVAL DAY TO
SECOND
DBTYPE_STR
DBTYPE_WSTR
Properties Supported
INTERVAL YEAR TO
MONTH
DBTYPE_STR
DBTYPE_WSTR
LONG
DBTYPE_STR
DBTYPE_WSTR
LONG RAW
BTYPE_BYTES
DBTYPE_BYTES
NCHAR
DBTYPE_STR
DBTYPE_WSTR
NCLOB
DBTYPE_STR
DBTYPE_WSTR
NUMBER
DBTYPE_VARNUMERIC
DBTYPE_VARNUMERIC
NUMBER(p,s)
DBTYPE_NUMERIC
DBTYPE_NUMERIC
NVARCHAR2
DBTYPE_STR
DBTYPE_WSTR
RAW
DBTYPE_BYTES
DBTYPE_BYTES
ROWID
DBTYPE_STR
DBTYPE_STR
TIMESTAMP
DBTYPE_DBTIMESTAMP
DBTYPE_DBTIMESTAMP
DBTYPE_DBTIMESTAMP
DBTYPE_DBTIMESTAMP
DBTYPE_DBTIMESTAMP
VARCHAR
DBTYPE_WSTR
DBTYPE_STR
Properties Supported
This section lists the properties supported by Oracle Provider for OLE DB. The
read/write status and initial values are noted.
DataSourceInfo Properties
Session Properties
Rowset Properties
DBPROPSET_DATASOURCE Properties
Property
Status
Initial Value
DBPROP_CURRENTCATALOG
READ-ONLY
NULL
DataSourceInfo Properties
Table A3 lists DataSourceInfo properties.
Properties Supported
Table A3
DBPROPSET_DATASOURCEINFO Properties
Property
Status
Initial Value
DBPROP_ACTIVESESSIONS
READ-ONLY
0, Unlimited sessions
DBPROP_ASYNCTXNABORT
READ-ONLY
VARIANT_FALSE
DBPROP_ASYNCTXNCOMMIT
READ-ONLY
VARIANT_FALSE
DBPROP_BYREFACCESSORS
READ-ONLY
VARIANT_TRUE
DBPROP_CATALOGLOCATION
READ-ONLY
DBPROPVAL_CL_END
DBPROP_CATALOGTERM
READ-ONLY
"Database link"
DBPROP_CATALOGUSAGE
READ-ONLY
DBPROPVAL_CU_DML_STATEMENTS
DBPROP_COLUMNDEFINITION
READ-ONLY
DBPROPVAL_CD_NOTNULL
DBPROP_CONCATNULLBEHAVIOR
READ-ONLY
DBPROPVAL_CB_NON_NULL
DBPROP_CONNECTIONSTATUS
READ-ONLY
DBPROPVAL_CS_INITIALIZED
DBPROP_DATASOURCENAME
READ-ONLY
DBPROP_DATASOURCEREADONLY
READ-ONLY
VARIANT_FALSE
DBPROP_DBMSNAME
READ-ONLY
DBPROP_DBMSVER
READ-ONLY
DBPROP_DSOTHREADMODEL
READ/WRITE
DBPROPVAL_RT_FREETHREAD
DBPROP_GROUPBY
READ-ONLY
DBPROPVAL_GB_CONTAINS_SELECT
DBPROP_HETEROGENEOUSTABLES
READ-ONLY
DBPROPVAL_HT_DIFFERENT_CATALOGS
DBPROP_IDENTIFIERCASE
READ-ONLY
DBPROPVAL_IC_UPPER
DBPROP_MAXINDEXSIZE
READ-ONLY
DBPROP_MAXOPENCHAPTERS
READ-ONLY
0, not supported
DBPROP_MAXORSINFILTER
READ-ONLY
0, not supported
DBPROP_MAXROWSIZE
READ-ONLY
0, no limit
DBPROP_MAXROWSIZEINCLUDESBLOB
READ-ONLY
VARIANT_FALSE
DBPROP_MAXSORTCOLUMNS
READ-ONLY
0, not supported
DBPROP_MAXTABLESINSELECT
READ-ONLY
0, no limit
DBPROP_MULTIPLEPARAMSETS
READ-ONLY
VARIANT_TRUE
DBPROP_MULTIPLERESULTS
READ-ONLY
DBPROP_MR_SUPPORTED
_MR_CONCURRENT
DBPROP_MULTIPLESTORAGEOBJECTS
READ-ONLY
VARIANT_FALSE
DBPROP_MULTITABLEUPDATE
READ-ONLY
VARIANT_FALSE
DBPROP_NULLCOLLATION
READ-ONLY
DBPROPVAL_NC_HIGH
DBPROP_OLEOBJECTS
READ-ONLY
DBPROPVAL_OO_BLOB
DBPROP_ORDERBYCOLUMNSINSELECT
READ-ONLY
VARIANT_FALSE
DBPROP_OUTPUTPARAMETERAVAILABILITY READ-ONLY
| DBPROPVAL_
DBPROPVAL_OA_ATEXECUTE
DBPROP_PERSISTENTIDTYPE
READ-ONLY
DBPROPVAL_PT_NAME
DBPROP_PREPAREABORTBEHAVIOR
READ-ONLY
DBPROPVAL_CB_PRESERVE
DBPROP_PREPARECOMMITBEHAVIOR
READ-ONLY
DBPROPVAL_CB_PRESERVE
Properties Supported
Status
Initial Value
DBPROP_PROCEDURETERM
READ-ONLY
DBPROP_PROVIDERFRIENDLYNAME
READ-ONLY
DBPROP_PROVIDERNAME
READ-ONLY
OraOLEDBver.dll
DBPROP_PROVIDEROLEDBVER
READ-ONLY
"02.01"
DBPROP_PROVIDERVER
READ-ONLY
DBPROP_QUOTEDIDENTIFIERCASE
READ-ONLY
DBPROPVAL_IC_SENSITIVE
DBPROP_ROWSETCONVERSIONSONCOMMAND
READ-ONLY
VARIANT_TRUE
DBPROP_SCHEMATERM
READ-ONLY
"Owner"
DBPROP_SCHEMAUSAGE
READ-ONLY
DBPROPVAL_SU_DML_STATEMENTS |
DBPROPVAL_SU_TABLE_DEFINITION |
DBPROPVAL_SU_INDEX_DEFINITION |
DBPROPVAL_SU_PRIVILEGE_DEFINITION
DBPROP_SERVERNAME
READ-ONLY
DBPROP_SORTONINDEX
READ-ONLY
VARIANT_FALSE
DBPROP_SQLSUPPORT
READ-ONLY
DBPROPVAL_SQL_ODBC_MINIMUM |
DBPROPVAL_SQL_ANSI92_ENTRY |
DBPROPVAL_SQL_ESCAPECLAUSES
DBPROP_STRUCTUREDSTORAGE
READ-ONLY
DBPROPVAL_SS_ISEQUENTIAL_STREAM
DBPROP_SUBQUERIES
READ-ONLY
DBPROPVAL_SQ_CORRELATEDSUBQUERIES
DBPROP_SUPPORTEDTXNDDL
READ-ONLY
DBPROPVAL_TC_DDL_COMMIT
DBPROP_SUPPORTEDTXNISOLEVELS
READ-ONLY
DBPROPVAL_TI_CURSORSTABILITY |
DBPROPVAL_TI_READCOMMITTED
DBPROP_SUPPORTEDTXNISORETAIN
READ-ONLY
DBPROPVAL_TR_DONTCARE
DBPROP_TABLETERM
READ-ONLY
"Table"
DBPROP_USERNAME
READ-ONLY
DBPROPSET_DBINIT Properties
Property
Status
Initial Value
DBPROP_AUTH_PERSIST_SENSITIVE_
AUTHINFO
READ-ONLY
VARIANT_FALSE
DBPROP_AUTH_USERID
READ/WRITE
User ID
DBPROP_INIT_DATASOURCE
READ/WRITE
Connect string
DBPROP_INIT_HWND
READ/WRITE
DBPROP_INIT_LCID
READ/WRITE
LCID of system
DBPROP_INIT_OLEDBSERVICES
READ/WRITE
DBPROPVAL_OS_ENABLEALL
DBPROP_INIT_PROMPT
READ/WRITE
DBPROMPT_NOPROMPT
Properties Supported
Session Properties
Table A5 lists session properties.
Table A5
DBPROPSET_SESSION Properties
Property
Status
Initial Value
DBPROP_SESS_AUTOCOMMITISOLEVELS
READ-ONLY
DBPROPVAL_TI_CURSORSTABILITY |
DBPROPVAL_TI_READCOMMITTED
Rowset Properties
Table A6 lists rowset properties.
Table A6
DBPROPSET_ROWSET Properties
Property
Status
Initial Value
DBPROP_ABORTPRESERVE
READ/WRITE
VARIANT_TRUE
DBPROP_ACCESSORORDER
READ-ONLY
DBPROP_AO_RANDOM
DBPROP_APPENDONLY
READ-ONLY
VARIANT_FALSE
DBPROP_BLOCKINGSTORAGEOBJECTS
READ-ONLY
VARIANT_FALSE
DBPROP_BOOKMARKINFO
READ-ONLY
DBPROP_BOOKMARKS
READ/WRITE
VARIANT_FALSE
DBPROP_BOOKMARKSKIPPED
READ/WRITE
VARIANT_TRUE
DBPROP_BOOKMARKTYPE
READ-ONLY
DBPROP_BMK_NUMERIC
DBPROP_CACHEDEFERRED
READ-ONLY
VARIANT_FALSE
DBPROP_CANFETCHBACKWARDS
READ/WRITE
VARIANT_FALSE
DBPROP_CANHOLDROWS
READ/WRITE
VARIANT_FALSE
DBPROP_CANSCROLLBACKWARDS
READ/WRITE
VARIANT_FALSE
DBPROP_CHANGEINSERTEDROWS
READ-ONLY
VARIANT_TRUE
DBPROP_CLIENTCURSOR
READ/WRITE
VARIANT_TRUE
DBPROP_COLUMNRESTRICT
READ-ONLY
VARIANT_TRUE
DBPROP_COMMANDTIMEOUT
READ/WRITE
DBPROP_COMMITPRESERVE
READ/WRITE
VARIANT_TRUE
DBPROP_DEFERRED
READ-ONLY
VARIANT_TRUE
DBPROP_DELAYSTORAGEOBJECTS
READ-ONLY
DBPROP_FINDCOMPAREOPS
READ-ONLY
DBPROPVAL_CO_EQUALITY |
DBPROPVAL_CO_STRING |
DBPROPVAL_CO_CASESENSITIVE |
DBPROPVAL_CO_CASEINSENSITIVE |
DBPROPVAL_CO_CONTAINS |
DBPROPVAL_CO_BEGINSWITH
DBPROP_HIDDENCOLUMNS
READ-ONLY
DBPROP_IACCESSOR
READ-ONLY
VARIANT_TRUE
DBPROP_ICOLUMNSINFO
READ-ONLY
VARIANT_TRUE
DBPROP_ICOLUMNSROWSET
READ/WRITE
VARIANT_TRUE
DBPROP_ICONNECTIONPOINTCONTAINER
READ-ONLY
VARIANT_TRUE
Properties Supported
Status
Initial Value
DBPROP_ICONVERTTYPE
READ-ONLY
VARIANT_TRUE
DBPROP_IMMOBILEROWS
READ-ONLY
VARIANT_TRUE
DBPROP_IMULTIPLERESULTS
READ/WRITE
VARIANT_TRUE
DBPROP_IROWSET
READ-ONLY
VARIANT_TRUE
DBPROP_IROWSETCHANGE
READ/WRITE
VARIANT_FALSE
DBPROP_IROWSETFIND
READ/WRITE
VARIANT_FALSE
DBPROP_IROWSETIDENTITY
READ-ONLY
VARIANT_TRUE
DBPROP_IROWSETINFO
READ-ONLY
VARIANT_TRUE
DBPROP_IROWSETLOCATE
READ/WRITE
VARIANT_FALSE
DBPROP_IROWSETREFRESH
READ/WRITE
VARIANT_FALSE
DBPROP_IROWSETSCROLL
READ/WRITE
VARIANT_FALSE
DBPROP_IROWSETUPDATE
READ/WRITE
VARIANT_FALSE
DBPROP_ISEQUENTIALSTREAM
READ/WRITE
VARIANT_TRUE
DBPROP_ISUPPORTERRORINFO
READ/WRITE
VARIANT_TRUE
DBPROP_LITERALBOOKMARKS
READ-ONLY
VARIANT_FALSE
DBPROP_LITERALIDENTITY
READ-ONLY
VARIANT_FALSE
DBPROP_LOCKMODE
READ-ONLY
DBPROPVAL_LM_NONE
DBPROP_MAXOPENROWS
READ/WRITE
0, No limit
DBPROP_MAXPENDINGROWS
READ-ONLY
0, No limit
DBPROP_MAXROWS
READ/WRITE
DBPROP_MAXROWSIZE
READ-ONLY
DBPROP_MAXROWSIZEINCLUDESBLOB
READ-ONLY
VARIANT_FALSE
DBPROP_NOTIFICATIONGRANULARITY
READ/WRITE
DBPROPVAL_NT_MULTIPLEROWS
DBPROP_NOTIFICATIONPHASES
READ/WRITE
DBPROPVAL_NP_OKTODO |
DBPROPVAL_NP_ABOUTTODO |
DBPROPVAL_NP_SYNCHAFTER |
DBPROPVAL_NP_FAILEDTODO |
DBPROPVAL_NP_DIDEVENT
DBPROP_NOTIFYCOLUMNSET
READ/WRITE
DBPROPVAL_NP_OKTODO |
DBPROPVAL_NP_ABOUTTODO |
DBPROPVAL_NP_SYNCHAFTER |
DBPROPVAL_NP_FAILEDTODO |
DBPROPVAL_NP_DIDEVENT
DBPROP_NOTIFYROWDELETE
READ/WRITE
DBPROPVAL_NP_OKTODO |
DBPROPVAL_NP_ABOUTTODO |
DBPROPVAL_NP_SYNCHAFTER |
DBPROPVAL_NP_FAILEDTODO |
DBPROPVAL_NP_DIDEVENT
DBPROP_NOTIFYROWFIRSTCHANGE
READ/WRITE
DBPROPVAL_NP_OKTODO |
DBPROPVAL_NP_ABOUTTODO
Properties Supported
Status
Initial Value
DBPROP_NOTIFYROWINSERT
READ/WRITE
DBPROPVAL_NP_OKTODO |
DBPROPVAL_NP_ABOUTTODO |
DBPROPVAL_NP_SYNCHAFTER |
DBPROPVAL_NP_FAILEDTODO |
DBPROPVAL_NP_DIDEVENT
DBPROP_NOTIFYROWRESYNCH
READ/WRITE
DBPROPVAL_NP_OKTODO |
DBPROPVAL_NP_ABOUTTODO |
DBPROPVAL_NP_SYNCHAFTER
DBPROP_NOTIFYROWSETRELEASE
READ/WRITE
DBPROPVAL_NP_OKTODO |
DBPROPVAL_NP_ABOUTTODO |
DBPROPVAL_NP_SYNCHAFTER
DBPROP_
NOTIFYROWSETFETCHPOSITIONCHANGE
READ/WRITE
DBPROPVAL_NP_OKTODO |
DBPROPVAL_NP_ABOUTTODO |
DBPROPVAL_NP_SYNCHAFTER
DBPROP_NOTIFYROWUNDOCHANGE
READ/WRITE
DBPROPVAL_NP_OKTODO |
DBPROPVAL_NP_ABOUTTODO |
DBPROPVAL_NP_SYNCHAFTER |
DBPROPVAL_NP_FAILEDTODO |
DBPROPVAL_NP_DIDEVENT
DBPROP_NOTIFYROWUNDODELETE
READ/WRITE
DBPROPVAL_NP_OKTODO |
DBPROPVAL_NP_ABOUTTODO |
DBPROPVAL_NP_SYNCHAFTER |
DBPROPVAL_NP_FAILEDTODO |
DBPROPVAL_NP_DIDEVENT
DBPROP_NOTIFYROWUNDOINSERT
READ/WRITE
DBPROPVAL_NP_OKTODO |
DBPROPVAL_NP_ABOUTTODO |
DBPROPVAL_NP_SYNCHAFTER |
DBPROPVAL_NP_FAILEDTODO |
DBPROPVAL_NP_DIDEVENT
DBPROP_NOTIFYROWUNDOUPDATE
READ/WRITE
DBPROPVAL_NP_OKTODO |
DBPROPVAL_NP_ABOUTTODO |
DBPROPVAL_NP_SYNCHAFTER |
DBPROPVAL_NP_FAILEDTODO |
DBPROPVAL_NP_DIDEVENT
DBPROP_ORDEREDBOOKMARKS
READ-ONLY
VARIANT_TRUE
DBPROP_OTHERINSERT
READ-ONLY
VARIANT_FALSE
DBPROP_OTHERUPDATEDELETE
READ-ONLY
VARIANT_FALSE
DBPROP_OWNINSERT
READ-ONLY
VARIANT_TRUE
DBPROP_OWNUPDATEDELETE
READ-ONLY
VARIANT_TRUE
DBPROP_QUICKRESTART
READ/WRITE
VARIANT_FALSE
DBPROP_REENTRANTEVENTS
READ-ONLY
VARIANT_FALSE
DBPROP_REMOVEDELETED
READ-ONLY
VARIANT_TRUE
DBPROP_REPORTMULTIPLECHANGES
READ-ONLY
VARIANT_FALSE
DBPROP_RETURNPENDINGINSERTS
READ/WRITE
VARIANT_TRUE
DBPROP_ROWRESTRICT
READ/WRITE
VARIANT_FALSE
DBPROP_ROWTHREADMODEL
READ-ONLY
DBPROPVAL_RT_FREETHREAD
DBPROP_SERVERCURSOR
READ/WRITE
VARIANT_FALSE
DBPROP_SERVERDATAONINSERT
READ/WRITE
VARIANT_TRUE
Interfaces Supported
Status
Initial Value
DBPROP_STRONGIDENTITY
READ/WRITE
VARIANT_TRUE
DBPROP_TRANSACTEDOBJECT
READ-ONLY
VARIANT_TRUE
DBPROP_UNIQUEROWS
READ/WRITE
VARIANT_FALSE
DBPROP_UPDATABILITY
READ/WRITE
DBPROPVAL_UP_CHANGE |
DBPROPVAL_UP_DELETE |
DBPROPVAL_UP_INSET
DBPROP_IROWSETIDENTITY
DBPROP_CANHOLDROWS
DBPROP_BOOKMARKS
DBPROP_CANFETCHBACKWARDS
DBPROP_CANSCROLLBACKWARDS
DBPROP_IROWSETIDENTITY
DBPROP_IROWSETLOCATE
DBPROP_CANHOLDROWS
DBPROP_BOOKMARKS
DBPROP_CANFETCHBACKWARDS
DBPROP_CANSCROLLBACKWARDS
Interfaces Supported
This section identifies the OLE DB interfaces that are supported by Oracle Provider for
OLE DB.
Data Source
Session
Command
Rowset
Multiple Results
Transaction Options
Interfaces Supported
Data Source
CoType TDataSource {
interface IDBCreateSession;
interface IDBInitialize;
interface IDBProperties;
interface IPersist;
interface IDBInfo;
interface ISupportErrorInfo;
}
Session
CoType TSession {
interface IGetDataSource;
interface IOpenRowset;
interface ISessionProperties;
interface IDBCreateCommand;
interface IDBSchemaRowset;
interface ISupportErrorInfo;
interface ITransactionJoin;
interface ITransactionLocal;
interface ITransaction;
}
Command
CoType TCommand {
interface IAccessor;
interface IColumnsInfo;
interface ICommand;
interface ICommandProperties;
interface ICommandText;
interface IConvertType;
interface IColumnsRowset;
interface ICommandPrepare;
interface ICommandWithParameters;
interface ISupportErrorInfo;
}
Rowset
CoType TRowset {
interface IAccessor;
interface IColumnsInfo;
interface IConvertType;
interface IRowset;
interface IRowsetInfo;
interface IColumnsRowset;
interface IConnectionPointContainer;
interface IRowsetChange;
interface IRowsetFind;
interface IRowsetIdentity;
interface
interface
interface
interface
interface
IRowsetLocate;
IRowsetRefresh;
IRowsetScroll;
IRowsetUpdate;
ISupportErrorInfo;
Multiple Results
CoType TMultipleResults {
interface IMultipleResults;
interface ISupportErrorInfo;
}
Transaction Options
CoType TTransactionOptions {
interface ITransactionOptions;
interface ISupportErrorInfo;
}
DBCOLUMN_IDNAME
DBCOLUMN_PROPID
DBCOLUMN_NAME
DBCOLUMN_NUMBER
DBCOLUMN_TYPE
DBCOLUMN_TYPEINFO
DBCOLUMN_COLUMNSIZE
DBCOLUMN_PRECISION
DBCOLUMN_SCALE
DBCOLUMN_FLAGS
DBCOLUMN_BASECATALOGNAME
OraOLEDB Tracing
DBCOLUMN_BASECOLUMNNAME
DBCOLUMN_BASESCHEMANAME
DBCOLUMN_BASETABLENAME
DBCOLUMN_COMPUTEMODE
DBCOLUMN_ISAUTOINCREMENT
DBCOLUMN_ISCASESENSITIVE
DBCOLUMN_ISSEARCHABLE
DBCOLUMN_OCTETLENGTH
DBCOLUMN_KEYCOLUMN
OraOLEDB Tracing
OraOLEDB provides the ability to trace the interface calls for debugging purposes.
This feature has been provided to assist Oracle Support Services in debugging
customer issues.
The provider can be configured to record the following information:
Transaction ID
To record global transaction enlistment and delistment
information, the TraceLevel value must be set to session object.
See "TraceLevel" on page A-12.
Note:
TraceFileName
Valid Value: Any valid path and file name
TraceFileName specifies the file name that is to be used for logging trace
information. If TraceOption is set to 0, the name is used as is. However, if
TraceOption is 1, then the thread ID is appended to the file name provided. See
"TraceOption" for more information.
TraceCategory
Valid Values:
0 = None
Provider-Specific Information
A-11
OraOLEDB Tracing
TraceLevel
Valid Values:
0 = None
2 = Session object
4 = Command object
8 = Rowset object
16 = Error object
TraceLevel specifies the OLE DB objects to be traced. Because tracing all the
entry and exit calls for all the OLE DB objects can be excessive, TraceLevel is
provided to limit tracing to a single or multiple OLE DB objects. To obtain tracing
on multiple objects, add the valid values. For example, if TraceLevel is set to 12
and TraceCategory is set to 3, the trace file will only contain method entry and
exit for Command and Rowset objects.
The TraceLevel value must be set to session object (2) to trace global transaction
enlistment and delistment information.
TraceOption
Valid Values:
Glossary
Component Object Model (COM)
A binary standard that enables objects to interact with other objects, regardless of
the programming language that each object was written in.
consumer
A consumer is any application or tool that calls to a data source or the interfaces of
provider to access data. See provider.
Oracle Net Services
The Oracle client/server communication software that offers transparent operation
to Oracle tools or databases over any type of network protocol and operating
system.
PL/SQL
Procedural language extension to SQL provided by Oracle .
provider
A provider is an interface or set of components that provides data to a consumer.
As the term is used with Oracle Provider for OLE DB, a data provider is a set of
COM components that transfer data from a data source to a consumer, by placing
the data in a tabular format when called for. See consumer.
stored procedure
A stored procedure is a PL/SQL block that are stored in an Oracle Database and
can be called by name from an application.
Glossary-1
stored procedure
Glossary-2
Index
A
ActiveX Data Objects, vii
ADO, 2-5, 2-9, 2-17
ADO Applications with OLE DB Services, 2-6
ADO.NET, 2-26
attributes
connection string, 2-7
C
C#
connection string, 2-26
example, 2-26
C++/COM, 2-5
C++/COM Applications with OLE DB Services, 2-6
CacheType
connection string attribute for rowsets, 2-7, 2-21
caching, 2-18
Cancel method, 2-19
case of object names, 2-24
ChunkSize
connection string attribute for rowsets, 2-7, 2-22
class ID
CLSID_OraOLEDB, 2-5
CLSCTX_INPROC_SERVER macro, 2-5
CLSID_MSDAINITIALIZE class, 2-6
CoCreateInstance
creating an instance of the data source object, 2-5
columns
metadata, A-10
COM
Component Object Model, vii
commands, 2-11
parameters, 2-12
preparing, 2-12
CommandTimeout property, 2-19
compatibility with OLE DB Services, 2-5
Component Certifications
My Oracle Support, 1-4
Component Object Model (COM), vii
connecting
Oracle databases supported, 2-5
to a specific database, 2-5
to an Oracle database, 2-6
to an Oracle database using ADO, 2-9
D
data source
creating an instance of, 2-5
distributed transactions, 2-8
objects, 2-5
properties, A-2
data source info
properties, A-2
DataTable, 2-27
datatypes
mappings between Oracle datatypes and OLE DB
types, A-1
mappings in rowsets and parameters, A-1
OLE DB, A-1
Oracle, A-1
date formats
NLS_DATE_FORMAT, 2-23
settings, 2-23
DBNotificationPort, 2-8
DBNotifications, 2-8
DBPROP_AUTH_PASSWORD property
setting, 2-5
DBPROP_AUTH_USERNAME property
enabling operating system authentication, 2-9
setting, 2-5
DBPROP_INIT_DATASOURCE property
setting, 2-5
DBPROP_INIT_OLEDBSERVICES property, 2-5
DBPROP_INIT_PROMPT property
setting, 2-5
Index-1
DBPROP_INIT_PROVIDERSTRING property
enabling operating system authentication, 2-9
setting, 2-8
DBPROP_IROWSETUPDATE property
setting of other properties, A-8
DBPROP_SERVERDATAONINSERT property, 2-21
DBPROPSET_DBINIT property set
setting properties, 2-5, 2-8
debugging, A-11
DeferUpdChk, 2-8, 2-22
connection string attribute to indicate whether to
defer updateability, 2-22
demobld.sql, 2-28
design
OLE DB, 1-1
DistribTX
connection string attribute for commands, 2-7
Distributed Transactions, 2-8
distributed transactions, 2-11
MDAC, 1-3
metadata, 2-18
metadata caching, 2-18
metadata columns
supported by Oracle Provider for OLE DB, A-10
MetaDataCacheSize, 2-8
Microsoft Data Access Components, 1-3
Microsoft Distributed Transaction Coordinator, 2-11
Microsoft Transaction Server, 2-11
MTS, see Microsoft Transaction Server
My Oracle Support, 1-4
KEY_HOMENAME, 2-8
L
LOB support, 2-24
ISequentialStream interface, 2-24
LockType
tips for ADO programmers, 2-22
N
F
features
new, ix
Oracle Provider for OLE DB, 2-1
FetchSize
connection string attribute for rowsets, 2-7, 2-22
files
installed on system for Oracle Provider for OLE
DB, 1-3
Oracle Provider for OLE DB, 1-3
G
global transactions, 2-11
H
HRESULT
error return code, 2-25
I
initialization and authorization
properties, A-4
installation, 1-3
Index-2
NDataType, 2-7
NDatatype, 2-13
.NET, 2-26
New Features in Oracle Provider for OLE DB for
Release 11.1, ix
New Features in Oracle Provider for OLE DB for
Release 11.1.0.7.20, ix
O
object names
case, 2-24
OLE DB
consumers, 1-2
datatypes, A-1
design, 1-1
Microsoft web site, 1-3
providers, 1-2
OLE DB .NET Data Provider, 2-7
compatibility, 2-26
OLE DB Services
ADO Applications with, 2-6
C++/COM Applications with, 2-6
compatibility with, 2-5
OleDbDataAdapter.Update(), 2-27
2-21
S
schema rowsets, 2-22
Server Data on Insert property, 2-21
sessions
interfaces supported, A-9
objects, 2-10
properties, A-5
SPPrmDefVal, 2-7
SPPrmsLOB, 2-7, 2-14
StmtCacheSize, 2-7
stored procedures and functions
executing, 2-11
returning rowsets, 2-15
system requirements
Oracle Provider for OLE DB, 1-3
T
P
password expiration
connection string attribute, 2-9
PwdChgDlg, 2-9
performance, 2-18
PLSQLRSet, 2-12
connection string attribute for commands, 2-7
properties
data source, A-2
data source info, A-2
initialization and authorization, A-4
rowset, A-5
rowset implications, A-8
sessions, A-5
supported by Oracle Provider for OLE DB, A-2
providers
OLE DB, 1-2
PwdChgDlg
connection string attribute for commands, 2-7
connection string attribute for data source, 2-9
R
registry
default attribute values, 2-8
returning rowsets
stored procedures and functions, 2-15
ROWID, 2-27
rowsets, 2-19
creating, 2-19
creating with ICommand, 2-20
creating with IOpenRowset, 2-19
date formats, 2-23
interfaces supported, A-9
properties, A-5
property implications, A-8
returning with procedures and functions, 2-15
schema, 2-22
tips
for ADO programmers, 2-22
TraceCategory, A-11
TraceFileName, A-11
TraceLevel, A-12
tracing, A-11
transaction options
interfaces supported, A-10
transactions
distributed, 2-11
global, 2-11
isolation levels, 2-11
local, 2-11
types supported, 2-11
U
UCS-2 character set, 2-24
Unicode, 2-24
UseSessionFormat
connection string attribute for commands, 2-7
V
VB.NET
connection string,
examples, 2-26
VCharNull, 2-7
2-26
Index-3
Index-4