新增功能

新版 Microsoft ODBC Driver for Oracle 在性能和稳定性方面都作了一些改进。您会发现新增了以下功能：

•	通过在 ODBC 数据源管理器中添加一些新的功能，包括强制执行“标准一周日期”的“转换”、“性能”和“自定义”选项，改进了配置控制。详细信息，请参阅使用安装程序添加和修改数据源和连接字符串属性。

•	扩展的帮助文件。


概述

Microsoft(R) ODBC Driver for Oracle 使您可以将符合 ODBC 规范的应用程序与 Oracle 数据库相连接。该版本添加了一些额外性能和控制功能，包括访问 PL/SQL 软件包、XA/DTC 集成以及通过 Internet Information Server (IIS) 访问 Oracle。ODBC 驱动程序符合《ODBC Programmer's Reference (Version 2.0)》中所述的关于平台的“开放式数据库连接”(ODBC) 规范。

本帮助文件描述了如何安装、配置和使用 ODBC 驱动程序，包括以下部分：

•	系统需求

•	使用安装程序添加和修改数据源

•	配置 Oracle ODBC 驱动程序

•	连接数据源

•	ODBC 符合级

•	映射数据类型

•	使用 Microsoft Internet Information Server

•	使用操作系统确认

•	使用键集合驱动的光标的限制

•	从存储程序返回数组参数

•	连接选项表

•	语句选项表

•	光标类型和并行组合表

•	错误消息

•	API 函数

•	关于 API 函数的线程安全性注释

•	关于 API 函数的注释

•	核心级函数

•	一级函数

•	二级函数


系统要求
系统需求

要使用 Microsoft ODBC Driver for Oracle，一定要有 Windows 95 或 Windows NT 以及在 Windows 系统下安装的 7.3 版或 7.3 以上版本的 Oracle Client Software。Microsoft ODBC Driver for Oracle 只支持 SQL*Net 2.3 或 2.3 以上版本。关于 Oracle 产品的详细信息，请参阅 Oracle 文档集。


使用安装程序添加和修改数据源

数据源标识通往数据的路径，该数据也可包括网络库、服务器、数据库和其他属性 — 在这种情况下，数据源就是通往 Oracle 数据库的路径。为了与数据源连接，驱动程序管理器会检查 Window 注册表以获取特定的连接信息。

ODBC 数据源管理器创建的注册表条目由 ODBC 驱动程序管理器和 ODBC 驱动程序使用。该条目包括每个数据源及其相应驱动程序的信息。在连接数据源之前，必须将连接信息添加到注册表中。

要添加和配置数据源，请通过 Windows 的 32 位 ODBC 控制面板访问 ODBC 管理器。ODBC 管理器就会更新您的数据源连接信息。在添加数据源时，ODBC 管理器便会为您更新注册表信息。

添加 Windows 数据源

1	要启动 ODBC 管理器，请双击 Windows “控制面板”中的 ODBC 图标。

2	出现“ODBC 数据源管理器”对话框后，请单击“添加”按钮。随后出现“创建新数据源”对话框。

3	选中“ODBC 驱动程序”，然后单击“完成”。随后出现“Microsoft ODBC for Oracle 安装程序”对话框。

4	在“数据源名称”框中，键入要访问的数据源的名称。此名称可以任由您选定。

5	在“描述”框中，输入对驱动程序的描述。此框为可选字段，描述连接数据源的数据库驱动程序，名称可任由您选定。

6	在“用户名”框中，键入您的数据库用户名。此用户名是您的数据库用户标识号。

7	在“服务器”框中，键入 Oracle 服务器引擎的连接字符串。此连接字符串标识您要访问的 Oracle 服务器引擎。

8	单击“确定”以添加该数据源。

注意： 随后出现“数据源”对话框，ODBC 管理器将更新注册表信息。您输入的用户名和连接字符串将成为该数据源的默认数据源连接值。也就是说，当使用对话框或连接字符串连接到数据源时，这些值便成为此数据源连接的默认条目。

9	单击“选项”以对 Oracle ODBC 安装进行指定选择。

转换

单击“选择”按钮以选择加载数据转换器。默认值为“没有转换器”。

性能

包含在“目录函数”中的 REMARKS 指定驱动程序是否返回 SQLColumns 结果集的“注释”列。当没有设置值时 ODBC Driver 提供更快的访问速度。

包含在“SQL 列”中的 SYNONYMS 指定驱动程序是否返回列信息。

自定义

Enforce ODBC DayOfWeek Standard 指定结果集是否符合 ODBC 指定的一周日期格式（星期日=1; 星期六=7）。

1	单击“添加”以添加另一数据源，或单击“关闭”退出该对话框。

修改 Windows 数据源

1	调用 ODBC 管理器，随后出现“数据源”对话框。

2	在“数据源”对话框中，选择要修改的 Oracle 数据源，然后单击“安装程序”。随后出现“Microsoft ODBC for Oracle 安装程序”对话框。

3	修改适用的数据源字段，然后单击“确定”。

在对话框中完成信息的修改后，ODBC 管理器便会更新注册表信息。


配置 Oracle ODBC 驱动程序
配置 ODBC Driver for Oracle

通过 ODBC 数据源管理器对话框或连接字符串参数了解数据环境并正确设置数据源连接的参数后，便可以控制 ODBC 驱动程序的性能。对话框提供了以下控件，以便使用对话框或连接字符串连接到数据源：

•	“用户 DSN”选项卡   显示计算机本地的“数据源名称”列表。

•	“系统 DSN”选项卡   显示允许添加或删除系统数据源的对话框。所有本地计算机用户均可访问系统数据源。

•	“文件 DSN”选项卡   显示允许从本地计算机添加或删除文件数据源的对话框。所有安装了相同驱动程序的用户都可共享此文件数据源。

•	“ODBC 驱动程序”选项卡   显示已安装的 ODBC 驱动程序列表。

•	“跟踪”选项卡   显示允许您指定 ODBC 驱动程序管理器如何跟踪 ODBC 函数调用的对话框。可以为安装的每个 ODBC 应用程序分别配置跟踪。

•	“关于”选项卡   显示列出了已安装的 ODBC 组件文件的对话框。

添加数据源之后，可以使用“ODBC 数据源管理器”对话框设置访问数据源的方式。选择数据源，然后单击某个选项卡以编辑或复查信息。

“语句”句柄的默认限制 (50) 由服务器设置。


连接数据源

ODBC 应用程序可以用许多方法传递连接信息。例如，应用程序可以使驱动程序始终向用户提示连接信息，也可以期待指定数据源连接的连接字符串。使用何种方法连接数据源取决于 ODBC 应用程序所用的连接方法。

连接数据源的一种常用方法是通过数据源对话框。如果您的 ODBC 应用程序被设置为要使用对话框，则会出现对话框并提示您输入相应的数据源连接信息。

另一种常用方法是使用连接字符串。

通过对话框连接数据源

1	出现“数据源”对话框时，请选择 Oracle 数据源并单击“确定”。随后出现“连接”对话框。

2	在“连接”对话框中填入适当信息，然后单击“确定”。

验证连接信息后，应用程序便可使用 ODBC 驱动程序访问此数据源所包含的信息。


连接字符串属性

一些应用程序不使用对话框，而使用能够指定数据源连接信息的连接字符串，来获得该信息。连接字符串由指定驱动程序如何连接到数据源的一系列属性组成。每项属性分别代表一条特定信息，驱动程序了解这些信息之后才能进行适当的数据源连接。每个驱动程序的属性集也许会有所不同，但连接字符串的格式却始终不变。连接字符串的格式如下：

“DSN=数据源名称[;SERVER=值] [;PWD=值] [;UID=值] [;<属性>=<值>]”

注意   新版的 Microsoft ODBC Driver for Oracle 所支持的连接字符串格式与版本 1 的略有不同。

如果没有指定 UID、PWD、服务器（或 CONNECTSTRING）和 DRIVER 属性，则必须指定数据源名称。然而，其他属性都是可选的。如果未指定属性，该属性的默认值将设为您在 ODBC 数据源管理器的 DSN 选项卡中所指定的值。属性值可能区分大小写。

连接字符串的属性如下：

属性	描述	默认值
DSN	数据源名称。此名称列于 ODBC 数据源管理器的“ODBC 驱动程序”选项卡下。	“”
PWD	要访问的 Oracle 服务器的密码。	“”
SERVER	要访问的 Oracle 服务器的连接字符串。	“”
UID	Oracle 服务器的用户名。取决于您的系统，此属性可能是必选的。即，出于安全需要，某些数据库和表格可能要求此属性。 使用“/”以使用 Oracle 的操作系统确认。	“”
BUFFERSIZE	在读取列时使用的最佳缓冲区大小。 驱动程序可优化读取，这样，Oracle 服务器的一次读取即可返回许多行，足以填充该大小的缓存区。当读取很多数据时，将该值设置较大可提高性能。	65535
SYNONYMCOLUMNS	如果该值为真（1），SQLColumn( ) API 调用将返回列信息。否则，SQLColumn(�) 只返回表格和视图的列。如果不设置该值，ODBC 驱动程序将提供更高的访问速度。	1
REMARKS	如果该值是真（1），驱动程序将返回 SQLColumns 结果集的“说明”列。如果不设置该值，ODBC 驱动程序将提供更高的访问速度。	0
StdDayOfWeek	在默认情况下强制执行 DAYOFWEEK 标量的 ODBC 标准，但需要本地化版本的用户可以更改行为以使用任何 Oracle 返回值。	1
例如，使用 mickey.world Oracle 服务器作为 Oracle 用户 cindy，从而连接到 Employees 数据源上的连接字符串为：

“DSN=Employees;UID=cindy;PWD=secret;SERVER=mickey.world”

又如，使用操作系统确认和名为 moola 的 Oracle 服务器，连接到 Payroll 数据源上的连接字符串为：

“DSN=Payroll;UID=/;PWD=;SERVER=moola”


ODBC 符合级

ODBC 为驱动程序定义了两种类型的符合标准 — API 符合标准和 SQL 语法符合标准。API 符合涉及到驱动程序支持的函数。SQL 符合涉及到驱动程序支持的 SQL 语法。 每一种符合标准均由若干级组成。

API 符合级

ODBC 驱动程序支持 API 核心级函数和 API 一级函数。该驱动程序也支持下列 API 二级函数：

•	SQLBrowseConnect(�)

•	SQLDataSources(�)

•	SQLDescribeParam(�)

•	SQLExtendedFetch(�)

•	SQLForeignKeys(�)

•	SQLMoreResults(�)

•	SQLNativeSql(�)

•	SQLNumParams(�)

•	SQLPrimaryKeys(�)

•	SQLProcedureColumns(�)

•	SQLProcedures(�)

•	SQLSetPos(�)

•	SQLSetScrollOptions(�)

支持的选项

对于 SQLGetConnectOption(�) 和 SQLSetConnectOption(�) 一级函数，驱动程序支持下列选项：

•	SQL_ACCESS_MODE （仅适于 SQLGetConnectOption(�)）

•	SQL_AUTOCOMMIT

•	SQL_ODBC_CURSORS

•	SQL_OPT_TRACEFILE

•	SQL_OPT_TRACE

•	SQL_TRANSLATE_DLL

•	SQL_TRANSLATE_OPTION

•	SQL_TXN_ISOLATION

对于 SQLGetStmtOption(�) 和 SQLSetStmtOption(�) 一级函数，驱动程序支持下列选项：

•	SQL_BIND_TYPE

•	SQL_CONCURRENCY

•	SQL_CURSOR_TYPE

•	SQL_KEYSET_SIZE

•	SQL_MAX_ROW

•	SQL_ROWSET_SIZE


SQL 符合级

ODBC 驱动程序支持最小 SQL 语法和核心 SQL 语法，同时支持下列 SQL 的 ODBC 扩展：

•	日期、时间和时间标记数据

•	Left and right Outer 连接

•	数值函数：

abs	log	round	tan
ceiling	log10	second	truncate
cos	mod	sign
exp	pi	sin
floor	power	sqrt
•	日期函数：

curdate	dayofweek	monthname	second
curtime	dayofyear	minute	week
dayname	hour	now	year
dayofmonth	month	quarter
•	字符串函数：

ascii	left	right	ucase
char	length	rtrim
concat	ltrim	soundex
lcase	replace	substring
•	类型转换函数：

convert
•	下列系统函数：

ifnull	user


映射数据类型

Oracle 服务器支持多种数据类型。ODBC 驱动程序将这些数据类型映射为相应的 ODBC SQL 数据类型。下表列出了 Oracle 7.3 服务器数据类型及其相应的 ODBC SQL 数据类型。

Oracle 服务器数据类型	ODBC SQL 数据类型
CHAR	SQL_CHAR
DATE	SQL_TIMESTAMP
FLOAT	SQL_DOUBLE
INTEGER	SQL_DECIMAL
LONG	SQL_LONGVARCHAR
LONG RAW	SQL_LONGVARBINARY
NUMBER	SQL_DECIMAL
RAW	SQL_VARBINARY
VARCHAR2	SQL_VARCHAR
注意   ODBC SQL 数据类型不支持 MLSLABEL Oracle 数据类型。在局部代码页格式中返回标量值。


使用 Microsoft Transaction
使用 Microsoft Transaction Server

可以使 Oracle 数据库能够使用 Windows NT 和 Windows 95 上的 Microsoft Transaction Server (MTS) 组件。要使 Oracle 数据库能够使用支持事务的 MTS 组件，系统管理员应该创建名为 V$XATRANS$ 的视图。要创建该脚本文件，必须运行 Oracle 提供的脚本。详细信息，请参阅《Microsoft Transaction Server Help》或 Oracle 文档。


使用 Microsoft Internet Information Server

如果在 Internet Information Server (IIS) 脚本中连接时遇到困难（尤其是 ORA-12641 错误），请在 SQLNET.ORA 文件中添加如下行：

SQLNET.AUTHENTICATION_SERVICES = (none)

这样可以禁用安全网络服务，以便匿名确认可以工作。


使用操作系统确认

Oracle 操作系统确认依赖于控制访问数据源的下一级操作系统。用户在使用这种方法登录时，不必输入密码。

要使用该功能，请在使用任何连接 API、SQLBrowseConnect、SQLConnect 和 SQLDriverConnect 进行连接时，将“/”指定为用户标识号，而且不要指定密码。


使用键集合驱动的光标的限制

一定要能够检索所查询的表格的 ROWID 列。键集合驱动的光标不能用于连接、查询或包含DISTINCT、GROUP BY、UNION、INTERSECT 和 MINUS 子句的语句。


从存储程序返回数组参数

在 Oracle 7.3 中，只能通过 PL/SQL 程序来访问 PL/SQL 记录类型。如果程序/函数包中有一个被定义为 PL/SQL 记录类型的形式参数，就不可能将此形式参数绑定为参数。使用 Microsoft Oracle ODBC 驱动程序中的 PL/SQL TABLE 类型，从包含相应 escape 顺序的程序中调用数组参数。

 使用下列语法调用该程序

{call  <软件包名>.<程序或函数>;
(..., {resultset <要求的最大记录值> ,<形式数组参数_1>,;
 <形式数组参数_2>,...,<形式数组参数_n> }, ... ) }

注意

•	<要求的最大记录值> 参数必须 >= 结果集中出现的行数。否则，Oracle 将返回驱动程序传递给您的错误。

•	无法将 PL/SQL 记录用作数组参数。每个数组参数只能代表数据库表格中的一列。

下面的例子定义了含有两个可以返回不同结果集的程序的软件包，然后提供了两种从程序包返回结果集的方法：

程序包定义：

CREATE OR REPLACE PACKAGE SimplePackage AS

TYPE t_id is TABLE of  NUMBER(5)

    INDEX BY BINARY_INTEGER;

TYPE t_Course is TABLE of VARCHAR2(10)

    INDEX BY BINARY_INTEGER;

TYPE t_Dept is TABLE of VARCHAR2(5)

    INDEX BY BINARY_INTEGER;

PROCEDURE proc1

 ( 	o_id 	OUT 	t_id,

    	ao_course 	OUT 	t_Course,

ao_dept	OUT 	t_Dept

 );

TYPE t_pk1Type1 IS TABLE OF VARCHAR2(100) INDEX BY BINARY_INTEGER;

TYPE t_pk1Type2 IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;

PROCEDURE proc2

(

i_Arg1	IN 	NUMBER,

ao_Arg2	OUT	t_pk1Type1,

ao_Arg3	OUT	t_pk1Type2

);

END SimplePackage;

CREATE OR REPLACE PACKAGE BODY SimplePackage AS

    PROCEDURE  proc1 ( o_id OUT t_id,

    ao_course OUT t_Course, ao_dept OUT t_Dept   ) AS

    BEGIN

  o_id(1):= 200;

          ao_course(1) :=  'M101';

          ao_dept(1) :=  'EEE' ;

          o_id(2) := 201;

          ao_course(2) :=  'PHY320';

          ao_dept(2) :=  'ECE' ;

     END proc1;

PROCEDURE proc2

(

i_Arg1	IN 	NUMBER,

ao_Arg2	OUT	t_pk1Type1,

ao_Arg3	OUT	t_pk1Type2

)

AS

i	NUMBER;

BEGIN

FOR i IN 1 .. i_Arg1 LOOP

ao_Arg2(i) := 'Row Number ' || to_char(i);

END LOOP;

FOR i IN 1 .. i_Arg1 LOOP

ao_Arg3(i) := i;

END LOOP;

END proc2;

END SimplePackage;

 调用程序，程序 PROC1

1	返回单个结果集中的所有列：

{ call SimplePackage.Proc1( {resultset  3, o_id , ao_course, ao_dept  } ) }

2	将每一列返回为单个结果集：

{call SimplePackage.Proc1( {resultset 3, o_id},  {resultset 3, ao_course}, {resultset 3, ao_dept} ) }

此处返回三个结果集，每列一个结果集。

 调用程序，程序 PROC2

1	返回单个结果集中的所有列：

{call SimplePackage.Proc2( 5 , {resultset  5, ao_Arg2, ao_Arg3} ) }

2	将每一列返回为单个结果集：

{call SimplePackage.Proc2( 5 , {resultset 5, ao_Arg2}, {resultset 5, ao_Arg3} ) }

确定您的应用程序读取了所有使用 SQLMoreResults API 的结果集。详细信息，请参阅 Microsoft ODBC SDK 文档。

注意  在 2.0 版本的 Microsoft ODBC for Oracle Driver 中，不能使用返回 PL/SQL 数组的 Oracle 函数返回结果集。


API 函数注释

Microsoft Oracle ODBC 驱动程序支持核心、一级和二级 API 函数。这些函数被列在 ODBC 符合级中。

•	核心级函数接口 (CLI) 符合级提供在 ISO CLI 说明中定义的特性和在 X/Open CLI 定义的强制特性。

•	一级函数符合级提供核心级接口功能以及事务处理等附加功能。

•	二级函数符合级提供一级功能以及书签、动态参数和 ODBC 函数的异步执行等附加功能。


关于 API 函数的线程-安全性注视
关于 API 函数的线程-安全性注释

尽管 Oracle 不允许在单一连接上执行多并发语句，Microsoft ODBC for Oracle Driver却是线程安全的。驱动程序强制执行线程限制。也就是说，在多线程的应用程序中，尽管每一线程随时都能调用 Oracle ODBC 驱动程序，但在原线程离开驱动器之前，驱动程序将禁止任何其它线程调用该驱动程序。

如果两个不同连接上存在两个语句，则驱动程序并不禁止。然而，如果两个语句在同一连接上，则可能要禁止。


核心级 API 函数

本级函数由最低级的 ODBC 驱动程序接口符合组成。

API 函数	注释
SQLAllocConnect	在 henv 指定的环境中为连接句柄 hdbc 分配内存。 只要调用SQLConnect、SQLBrowseConnect 或SQLDriverConnect，驱动程序管理器都将处理这个调用并调用驱动程序的 SQLAllocConnect。
SQLAllocEnv	显示指定 Oracle Client 软件要求的对话框，然后返回SQL_NULL_HANDLE。如果没有安装 Oracle Client 软件，此函数为环境句柄 henv 分配内存并初始化应用程序使用的 ODBC 调用级接口。
SQLAllocStmt	为语句句柄分配内存，并将语句句柄与 hdbc 指定的连接相关联。驱动程序管理器将此调用传递到驱动程序， 驱动程序为 hstmt 结构分配内存。
SQLBindCol	为结果列指定内存并指定结果类型。
SQLCancel	取消语句句柄 hstmt 的处理过程。在某些情况下，Oracle 不允许取消正在执行的语句。这意味着运行中的语句将继续执行直到 Oracle 完成了此处理过程，随后 ODBC 驱动程序才取消语句所生成的结果。
SQLColAttributes	返回结果集中列的描述器信息。描述器信息以字符串、32 位与描述器相关的值或整数值等形式返回。
SQLConnect	连接数据源。 要使用 Oracle 操作系统确认，请将“/”指定为 szUID 参数并将“”指定为 szAuthStr 参数。
SQLDescribeCol	返回给定结果列的名称、类型、精度、范围和空值性。 注意   SQLDescribeCol 报告计算的列作为 SQL_VARCHAR。
SQLDisconnect	关闭连接。如果连接缓冲区准许环境共享，并且应用程序在此环境下调用连接上的 SQLDisconnect，此连接将被返回到连接缓冲区，并且使用同一共享环境的其它组件仍然可使用该连接。
SQLError	返回有关最后错误的错误或状态信息。驱动程序维护可为 hstmt，hdbc 和 henv 参数返回的错误堆栈或列表，这取决于调用 SQLError 的方式。每执行一条语句，就刷新一次错误队列。通常检索一条 Oracle 错误消息，否则将是空的。
SQLExecDirect	执行一条新的、准备好的 SQL 语句。只要语句中含有参数，驱动程序就将使用该参数标记变量的当前值。 如果表格、视图或域名中含有空格，请用引号将名称引起来。例如，如果数据库含有叫作 My Table 的表格名和叫作 My Field 的域名， 需用引号将每个元素引起来。如下所示： SELECT“My Table”.“My Field1”,; “My Table”.“My Field2”FROM“My Table”
SQLExecute	执行准备好的 SQL 语句（已经由 SQLPrepare 准备好的语句）。只要语句中含有参数，驱动程序都将使用该参数标记变量的当前值。
SQLFetch	将结果集中一行取回到上一个 SQLBindCol 调用指定的位置。为未绑定列的 SQLGetData 调用准备驱动程序。
SQLFreeConnect	释放连接句柄和所有由句柄分配的内存。
SQLFreeEnv	关闭 ODBC 驱动程序，并释放所有与驱动程序关联的内存。
SQLFreeStmt	停止与特定 hstmt 关联的进程，关闭任何与 hstmt 关联的开放式光标，放弃悬而未决的结果，并有选择地释放所有与语句句柄关联的资源。
SQLGetCursorName	返回与给定 hstmt 关联的光标名。
SQLNumResultCols	返回结果集光标中的列数。
SQLPrepare	通过计划如何优化和执行语句来准备 SQL 语句。编译 SQL 语句使其可被 SQLExecDirect 执行。 如果表格、视图或域名中含有空格，需用引号将名称引起来。例如，如果数据库含有叫作 My Table 的表格名和叫作 My Field 的域名，需用引号将每个元素引起来。如下所示： SELECT“My Table”.“My Field”FROM“My Table” 有关使用包含数组的结果集作为正式参数的详细信息，请参阅从存储程序返回数组。
SQLRowCount	只有读取了最后一行后，Oracle 才提供确定结果列中的行数的方法，所以返回 -1。
SQLSetCursorName	将光标名与活动的语句句柄 hstmt 关联。
SQLSetParam	用 ODBC 2.x 中的 SQLBindParameter 替换。
SQLTransact	为对所有与连接有关联的语句句柄（hstmts）或与环境句柄 henv 关联的所有连接进行的全部活动操作，请求提交或回滚操作。 如果以人工模式提交失败，事务将保持活动态。您可以选择回滚事务或重新进行提交操作。如果以自动事务模式提交失败，则自动回滚事务。事务无法处于非活动态。


一级 API 函数

本级函数不仅提供核心接口符合，同时还提供事务支持等附加功能。

API 函数	注释
SQLColumns	为表格创建一个结果集，该表格是指定表格（一个或多个）的一个列的列表。为 PUBLIC 同义词请求列时，必须设置 SYNONYMCOLUMNS 连接属性并指定一个空字符串作为 szTableOwner 参数。当为 PUBLIC 同义词返回列时，驱动程序将 TABLE NAME 列设置为一个空字符串。结果集的每一行末尾都包含一附加列 ORDINAL POSITION。其值代表该列在表格中的序列。
SQLDriverConnect	连接现有的数据源。详细信息，请参阅连接字符串属性。
SQLGetConnectOption	返回连接选项的当前设置。驱动程序并不完全支持此函数：驱动程序支持 fOption 参数的所有值，但不支持 fOption 参数 SQL_TXN_ISOLATION 的某些 vParam 值。详细信息，请参阅连接选项表。
SQLGetData	检索给定结果集的当前记录中的单域值。
SQLGetFunctions	对于所有支持的函数返回 TRUE。由驱动程序管理器执行。
SQLGetInfo	返回与连接句柄 hdbc 关联的 ODBC 驱动程序和数据源的有关信息， 包括 SQLHDBC、SQLUSMALLINT、SQLPOINTER、SQLSMALLINT和 SQLSMALLINT *。
SQLGetStmtOption	返回语句选项的当前设置。详细信息，请参阅语句选项表。
SQLGetTypeInfo	返回有关数据源支持的数据类型信息。驱动程序返回 SQL 结果集中的信息。
SQLParamData	与 SQLPutData 一起用于在语句执行期间指定参数数据。
SQLPutData	允许应用程序在语句执行期间向驱动程序发送参数或列的数据。
SQLSetConnectOption	提供访问控制连接特征的选项。驱动程序并不完全支持此函数：驱动程序支持 fOption 参数的所有值，但不支持 fOption 参数 SQL_TXN_ISOLATION 的某些 vParam 值。详细信息，请参阅连接选项表。
SQLSetStmtOption	设置与语句句柄 hstmt 有关的选项。详细信息，请参阅语句选项表。
SQLSpecialColumns	检索在表中唯一地标识出行的列的优化集。
SQLStatistics	检索有关单一表格和索引的列表，或与表格关联的标记名。驱动程序返回信息作为结果集。
SQLTables	返回由 SQLTables 语句中参数指定的表格名称列表。如果没有指定参数，则返回存储在当前数据源中的表格名称。驱动程序返回结果信息作为结果集。 枚举类型调用将不接受远程视图或本地参数化视图的结果集。然而，如果正在用这个表名，用唯一的表名指定调用 SQLTables 将为这个视图找到匹配；这允许将 API 用于在创建新表格前检查名称是否冲突。 PUBLIC 同义词用“”的 TABLE_OWNER 值返回。 由 SYS 或 SYSTEM 所有的 VIEWS 被标识为 SYSTEM VIEW。


二级 API 函数

本级函数不仅提供一级接口符合，同时还提供支持书签等附加功能。

API 函数	注释
SQLBindParameter	使 SQL 语句中的参数标记与缓冲区关联。
SQLBrowseConnect	返回属性的连续级和属性值。
SQLDataSources	列出数据源的名称。由驱动程序管理器完成。
SQLDescribeParam	返回与准备好的 SQL 语句关联的参数标记的描述。 在分析语句的基础上，返回一个最好的参数类型推测。如果不能确定参数类型，SQL_VARCHAR 将按长度 2000 返回。
SQLDrivers	由驱动程序管理器完成。
SQLExtendedFetch	类似于 SQLFetch，但使用数组为每列返回多行。结果集可向前滚动，但并不是只能向前滚动，如果将光标定义为静态，结果集也能设置成向后滚动。对于带有默认列绑定的只向前的光标，大于 BUFFERSIZE 连接属性的数据集的列数据将被直接读取到数据缓冲区中。不支持长度可变的书签，也不支持根据书签偏移量（不等于 0）读取行集。
SQLForeignKeys	返回单个表或引用该单个表的其它表中的外部关键字的列表。
SQLMoreResults	确定在包含SELECT， UPDATE， INSERT 或 DELETE 语句的语句句柄（hstmt）上是否还有未处理的结果，如果存在的话，请初始化处理这些结果的进程。 当使用 {resultset� } escape  顺序时，Oracle 支持存储程序的多重结果集。
SQLNativeSql	有关使用的详细信息，请参阅从存储程序返回数组参数。
SQLNumParams	返回 SQL 语句中的参数数量。参数数量应该等于传递给 SQLPrepare 的 SQL 语句中的问号数量。
SQLPrimaryKeys	返回包含表格主键的列名。
SQLProcedureColumns	返回输入和输出参数的列表、返回值以及单个程序结果集中的列和两个附加列 OVERLOAD 和 ORDINAL_POSITION。OVERLOAD 是 Oracle Data Dictionary Views 的 ALL_ARGUMENTS 表中的 OVERLOAD 列。ORDINAL_POSITION 是 Oracle Data Dictionary Views 的 ALL_ARGUMENTS 表中的 SEQUENCE 列。对于软件包程序，PROCEDURE NAME 列使用 packagename.procedurename 格式。
SQLProcedures	返回数据源中的程序列表。对于程序包，PROCEDURE NAME 列使用 packagename.procedurename 格式。 由于 Oracle 没有提供区别程序包和函数包的方法，所以驱动程序对PROCEDURE_TYPE 列返回 SQL_PT_UNKNOWN。
SQLSetPos	在行集合中设置光标选项。可以同时使用 SQLSetPos 和 SQLGetData，在将光标定位到行集合中特定行上之后，检索已解除绑定的列的行。使用 fOption SQL_ADD 添加到结果集的行被添加到结果集合中最后的行之后。
SQLSetScrollOptions	设置控制与语句句柄 hstmt 关联的光标行为的选项。详细信息，请参阅光标类型和并行组合表。


连接选项表

这些选项允许在应用程序中自定义数据库连接。

连接选项	注释
SQL_AUTOCOMMIT	如果选择 SQL_AUTOCOMMIT_OFF，则应用程序必须显式地用 SQLTransact 提交或回滚事务。
SQL_ODBC_CURSORS	在驱动程序管理器中执行连接属性。
SQL_OPT_TRACE	在驱动程序管理器中执行连接属性。
SQL_OPT_TRACEFILE	在驱动程序管理器中执行连接属性。
SQL_TRANSLATE_DLL	返回错误： “驱动程序无效”。
SQL_TRANSLATE_OPTION	传递给转换 DLL. 的 32 位的值。
SQL_TXN_ISOLATION	驱动程序只允许： SQL_TXN_READ_COMMITTED 不支持下列的 vParams： SQL_TXN_READ_UNCOMMITTED SQL_TXN_REAPEATABLE_READ SQL_TXN_SERIALIZABLE
SQL_ATTR_ENLIST_IN_DTC	ODBC 3.0 连接属性允许在由 Microsoft(R) Transaction Server 协调的分布事务中，使用 Oracle ODBC 驱动程序；以 vParam 参数的形式提供事务的接口指针 （pITransaction）。
SQL_ATTR_CONNECTION_DEAD	只读 ODBC 3.5 连接属性允许测定连接 Oracle 服务器是否失败。只能读取，不能设置。


语句选项表

这些选项允许在应用程序中自定义特定执行语句。

语句选项	注释
SQL_BIND_TYPE	不能超出 2,147,483,647 字节或可用的内存。
SQL_CONCURRENCY	对于允许值，请参阅有效的光标类型和并行组合表。
SQL_CURSOR_TYPE	驱动程序不允许 SQL_CURSOR_DYNAMIC。详细信息，请参阅 SQLSetScrollOptions。对于允许值，请参阅有效的光标类型和并行组合表。
SQL_GET_BOOKMARK	返回一个 32 位的整数值，代表当前记录数字的书签。只能读取，不能设置。
SQL_KEYSET_SIZE	只能设置为 0。
SQL_MAX_ROWS	要从结果集返回的最大行数。
SQL_ROW_NUMBER	返回一个 32 位整数，用以指定结果集中当前行的位置。
SQL_ROWSET_SIZE	不能超出 4,294,967,296 行，并且在您的计算机中必须有足够的虚拟内存来处理您的各种请求。
SQL_USE_BOOKMARKS	支持设置 SQL_USE_BOOKMARKS 到 SQL_UB_ON，并且显露定长书签。


光标类型和并行组合表

光标类型控制用户可以使用的光标的功能。并行选项控制结果集的可更新性和锁定行为。

光标类型	并行（允许值）
SQL_CURSOR_FORWARD_ONLY	SQL_CONCUR_READ_ONLY
SQL_CURSOR_STATIC	SQL_CONCUR_READ_ONLY
SQL_CURSOR_KEYSET_DRIVEN*	SQL_CONCUR_READ_ONLY SQL_CONCUR_LOCK ** SQL_CONCUR_VALUES

注释

* 请参阅使用键集合驱动的光标的限制。

**只有在将 SQL_AUTOCOMMIT 连接选项设定为 SQL_AUTOCOMMIT_OFF，才支持 SQL_CONCUR_LOCK 。


错误消息

出现错误时，Microsoft ODBC Driver for Oracle 将返回 SQLSTATE（一种 ODBC 错误代码）和一条错误消息。驱动程序检测到错误或 Oracle 服务器返回错误时，驱动程序都生成该信息。

由 Oracle ODBC 驱动程序返回的消息

如果存在 Oracle 错误消息，则返回的消息前依次出现 [Microsoft]、[ODBC Driver for Oracle] 和 [Oracle] 标记。否则，返回的错误消息中就没有 [Oracle] 标记。如下例所示：

Oracle 错误消息：

[Microsoft][ODBC driver for Oracle][Oracle]ORA-nnnnn 消息文本

Oracle ODBC 驱动程序错误消息：

[Microsoft][ODBC driver for Oracle]