ACISessionGet()¶
-
ACISessionGet()¶
作用:
此会话可以是具有新的基础连接的新会话,也可以是通过现有连接池中的虚拟连接启动的会话,也可以是现有会话池中的虚拟会话。 调用函数的方式决定了它的行为。
语法:
sword ACISessionGet ( ACIEnv *envhp,
ACIError *errhp,
ACISvcCtx **svchp,
ACIAuthInfo *authInfop,
OraText *dbName,
ub4 dbName_len,
const OraText *tagInfo,
ub4 tagInfo_len,
OraText **retTagInfo,
ub4 *retTagInfo_len,
boolean *found,
ub4 mode );
参数:
- envhp (IN/OUT)
ACI的环境句柄,需要有创建了连接池的环境句柄。
- errhp (IN/OUT)
错误句柄,该接口调用失败时,错误信息会存在该句柄上,调用 ACIErrorGet 获得错误信息。
- svchp (OUT)
一个上下文句柄,必须是已经设置了服务器句柄的服务上下文句柄。
默认模式下,如果指定的上下文句柄非空,那么在登录以后,会自动设置相关的连接句柄到该句柄上。如果指定的上下文句柄为空,那么ACI会自动分配一个上下文句柄输出,这个上下文句柄不需要通过调用 ACIHandleFree 来释放;当应用调用 ACILogoff 以后,ACI会自动释放这个句柄。连接池模式下,一个新的会话句柄将会被分配,并且会从连接池中获取一个可用的连接,开启会话
不能修改上下文句柄中的server和session句柄的任何属性, ACIAttrSet 将会报错,只有上下文的ACI_ATTR_STMTCACHESIZE属性可以被修改。
- authInfop (IN)
认证信息句柄。在默认模式和连接池模式下,该句柄可以获取会话句柄的所有属性。
- dbName (IN)
默认模式下为数据库的连接串,连接池模式下为 ACIConnectionPoolCreate 返回的连接池名。
- dbName_len (IN)
dbName 参数的字节长度。
- tagInfo (IN)
ACI不使用。
- tagInfo_len (IN)
ACI不使用。
- retTagInfo (OUT)
ACI不使用。
- retTagInfo_len (OUT)
ACI不使用。
- found (OUT)
ACI不使用。
- mode (IN)
可用模式如下:
- ACI_DEFAULT
默认模式,会返回新的连接会话。
- ACI_SESSGET_CPOOL
从连接池中获取连接会话。
- ACI_SESSGET_SPOOL
从会话池中获取连接会话。
- ACI_SESSGET_STMTCACHE
指定获得的会话为语句句柄缓存模式。ACI_SESSGET_STMTCACHE可与ACI_DEFAULT和ACI_SESSGET_CPOOL一起使用,比如:ACI_SESSGET_CPOOL|ACI_SESSGET_STMTCACHE。
说明:
此函数可以从会话池和连接池中获取会话,因此需要仔细核对池和mode参数的是否一致。