ACILogon2()

ACILogon2()

作用:

此会话可以是具有新的基础连接的新会话,也可以是通过现有连接池中的虚拟连接启动的会话,也可以是现有会话池中的虚拟会话。 调用函数的方式决定了它的行为。

语法:

sword ACILogon2 ( ACIEnv          *envhp,
                  ACIError        *errhp,
                  ACISvcCtx      **svchp,
                  const OraText   *username,
                  ub4              uname_len,
                  const OraText   *password,
                  ub4              passwd_len,
                  const OraText   *dbname,
                  ub4              dbname_len );
                  ub4              mode );

参数:

  • envhp (IN)

ACI环境句柄,如果使用连接池,该环境句柄必须是对应连接池所在的句柄。

  • errhp (IN/OUT)

错误句柄,该接口调用失败时,错误信息会存在该句柄,调用 ACIErrorGet 获得错误信息。

  • svchp (IN/OUT)

服务器上下文句柄。默认模式下,如果指定的上下文句柄非空,那么在登录以后,会自动设置相关的连接句柄到该句柄上。如果指定的上下文句柄为空,那么ACI会自动分配一个上下文句柄输出,这个上下文句柄不需要通过调用 ACIHandleFree 来释放;当应用调用 ACILogoff 以后,ACI会自动释放这个句柄。

连接池模式下,一个新的会话句柄将会被分配,并且会从连接池中获取一个可用的连接,开启会话。

不能修改上下文句柄中的server和session句柄的任何属性, ACIAttrSet 将会报错,只有上下文的ACI_ATTR_STMTCACHESIZE属性可以被修改。

  • username (IN)

登录的用户名. 必须是 ACIEnvNlsCreate 调用指定的charset 参数字符集的字符串。

  • uname_len (IN)

登录的用户名长度。Username的字节长度,不是字符长度。

  • password (IN)

登录的密码,必须是 ACIEnvNlsCreate 调用指定的charset 参数字符集的字符串.如果是连接池模式,且password为NULL,则会用连接池中的用户进行登录。

  • passwd_len (IN)

登录的密码长度。password的字节长度,不是字符长度。

  • dbname (IN)

默认情况下为登录的TNS服务名/连接字符串,如果是在连接池模式下,这个参数是连接池的名称。参数字符集必须是 ACIEnvNlsCreate 调用指定的charset 参数字符集的字符串。

  • dbname_len (IN)

dbname参数的字节长度,不是字符长度。

  • mode (IN)

有以下几种mode参数:

  • ACI_DEFAULT

等同于调用ACILogon,可以与ACI_LOGON2_STMTCACHE同时使用,比如ACI_DEFAULT | ACI_LOGON2_STMTCACHE

  • ACI_LOGON2_CPOOL/ACI_CPOOL

使用连接池,可以与ACI_LOGON2_STMTCACHE同时使用,比如ACI_LOGON2_CPOOL | ACI_LOGON2_STMTCACHE

  • ACI_LOGON2_SPOOL

从会话池获得连接,可以与ACI_LOGON2_STMTCACHE同时使用,比如ACI_LOGON2_SPOOL | ACI_LOGON2_STMTCACHE

  • ACI_LOGON2_STMTCACHE

使用语句句柄缓存, ACI_LOGON2_STMTCACHE

说明:

此调用可以从连接池和会话池中获取连接,请注意传入的池和类型是一致的。