SetConnect() 函数仅在 Windows(TM) 环境中可用。它将该连接切换至指定的显式的连
接。
重要: 对于与 Windows(TM) 应用程序的 Version 5.01 GBase 8s ESQL/C 的兼容性,
GBase 8s ESQL/C 支持 SetConnect() 连接库函数。当您为 Windows(TM) 环境编写新的
GBase 8s ESQL/C 应用程序时,
请使用 SQL SET CONNECTION 语句来切换至另一活动的
连接。
语法
void *SetConnect ( void *CnctHndl)
CnctHndl
前面的 GetConnect() 调用已返回的连接句柄。
用法
SetConnect() 函数映射至简单的(不带有 DEFAULT 选项的)SQL SET
CONNECTION 语句。SetConnect() 调用等同于下列 SQL 语句:
EXEC SQL set connection db_connection;
在此示例中,db_connection 是 GetConnect() 函数已建立的现有连接的名称。您将此
db_connection 名称作为参数传递给 SetConnect() 函数。
它是您想要使其活动的连接的连接
句柄。
如果您传递空句柄,
则 SetConnect() 函数返回当前的连接句柄,
且不更改当前的连接。
如果当您传递空句柄时不存在当前的连接,则 SetConnect() 返回空。
例如,下列代码片段使用 SetConnect() 来将至 acctsrvr 数据库服务器上 accounts
数据库的连接(cnctHndl2)切换至 mainsrvr 数据库服务器上的 customers 数据库
(cnctHndl1):
void *cnctHndl1, *cnctHndl2, *prevHndl;
⋮
GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 929 -
lish connection 'cnctHndl1' to customers@mainsrvr */
strcpy(InetLogin.InfxServer, "mainsrvr");
cnctHndl1 = GetConnect();
EXEC SQL database customers;
⋮
/* Establish connection 'cnctHndl2' to accounts@acctsrvr */
strcpy(InetLogin.InfxServer, "acctsrvr");
cnctHndl2 = GetConnect();
EXEC SQL database accounts;
⋮
prevHndl = SetConnect( cnctHndl1 );
重要: 由于 SetConnect() 函数映射至 SET CONNECTION 语句,因此,它设置
SQLCODE 和 SQLSTATE 状态代码,来指示该连接切换请求成功还是失败。此行为不同
于 Windows(TM) 的 Version 5.01 GBase 8s ESQL/C 中的 SetConnect(),其中,此函数未设
置 SQLCODE 和 SQLSTATE 值。
SetConnect() 函数取得连接名称的方式不同于 SET CONNECTION 语句。
SetConnect()
使用存储在连接句柄中的内部生成的名称。您必须指定此句柄作为 SetConnect() 调用的参
数。
该 SET CONNECTION 语句使用 CONNECT 语句的 AS 子句指定的用户定义的连接
名称。
重要: 由于 GetConnect() 函数映射至带有 WITH CONCURRENT TRANSACTION
子句的 CONNECT 语句,因此它允许带有打开的事务的显式的连接成为暂停的。在您的
GBase 8s ESQL/C 应用程序调用 SetConnect() 函数来切换至另一显式的连接之前,它不需
要确保提交了或回滚了当前的事务。
返回代码
CnctHndl
如果该函数已返回了当前为暂停的连接的连接句柄,则 SetConnect() 调用成功。
空指针
SetConnect() 调用不成功,指示未建立显式的连接。