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参数的是否一致。