Version 3.0 is a major update to ODBC--more major than previous versions
have been. To align it with the new standard, Microsoft added about 20 function
calls, additional data types, and scalar functions.
ODBC 3.0 includes binding, fetching, and bookmark enhancements. It provides
variable-length bookmarks and can update and delete using bookmarks. It supports
fetches based on search conditions, row-wise parameter binding, and quick
rebinding using offsets from bound-
variable addresses.
Programmers writing for ODBC 2.0 use connection and statement options to
govern behavior such as whether a driver should use native cursors or the ODBC
Cursor Library. ODBC 3.0 supersedes these options with attributes and adds
application-level environment attributes. It also adds diagnostic data
structures to make error handling more flexible.
Previously, an application typically used a loop to call SQLError for error
codes and messages. SQLError has a fixed number of arguments and returns, but
the new diagnostics use extensible data structures so you can provide additional
error information.
ODBC 3.0 adds descriptors comparable to those in SQL-92 and similar to the
information stored in the SQL Descriptor Area (SQLDA) of embedded SQL programs.
Descriptors are data structures that store information about rows
or parameters. Applications can use a number of descriptors, so version 3.0 uses
handles to keep track of them. It adds a new generic handle-allocation function,
SQLAllocHandle, that lets you define it as an environment, connection,
statement, or descriptor handle.
Version 3.0 changes the date/time data type and adds large binary and
character objects, intervals, and Unicode data types. It also supports ANSI and
Unicode versions of all functions. ODBC 3.0 adds SQL3-style locators to handle
large objects and several new locator functions (e.g., SQLGetPosition and
SQLGetSubString) to work with substrings within large character objects.
Finally, version 3.0 adds an uninstaller and views to expose schema information.