服务上下文句柄¶
ACI_ATTR_SERVER¶
- 模式:
读/写
- 描述:
读取时,返回指向服务上下文的服务器上下文属性的指针。
更改后,设置服务上下文的服务器上下文属性。
- 属性数据类型:
ACIServer ** / ACIServer *
ACI_ATTR_TRANS¶
- 模式:
读/写
- 描述:
读取时,返回指向服务上下文的事务上下文属性的指针。
更改后,设置服务上下文的事务上下文属性。
- 属性数据类型:
ACITrans ** / ACITrans *
ACI_ATTR_SESSION¶
- 模式:
读/写
- 描述:
读取时,返回指向服务上下文的身份验证上下文属性的指针。
更改后,设置服务上下文的身份验证上下文属性。
- 属性数据类型:
ACISession ** / ACISession *
ACI_ATTR_CALL_TIMEOUT¶
- 模式:
读/写
- 描述:
数据库在服务上下文句柄与数据库往返调用过程中的超时时间,单位是毫秒。当调用超时时,网络超时会返回一个错误。这个属性可以动态设置,如果设置为0,则没有超时时间。
这个属性只影响客户端的数据收发超时时间,与数据库端无关。
- 属性数据类型:
ub4*/ub4
- 举例:
static void func1( )
{
sword status = 0;
ACIStmt *stmthp = (ACIStmt *)0;
OraText *sqlStmt = (OraText *)"SELECT EMPNO FROM SCOTT.EMP";
ub4 set_timeout= 200; /* in milliseconds */
ub4 get_timeout = 0;
Checkerr (errhp, \
ACIStmtPrepare2 ((ACISvcCtx *)svchp, (ACIStmt **)&stmthp, \
(ACIError *)errhp, (OraText *)sqlStmt, (ub4)strlen((char *)sqlStmt), \
(OraText *)NULL, (ub4) 0, (ub4)ACI_NTV_SYNTAX, (ub4)ACI_DEFAULT), \
(OraText *)"ACIStmtPrepare2");
/* 设置超时时间*/
Checkerr (errhp,
ACIAttrSet(svchp, (ub4) ACI_HTYPE_SVCCTX,
(dvoid *) &set_timeout, (ub4) 0,
(ub4) ACI_ATTR_CALL_TIMEOUT, errhp),
"ACIAttrSet ACI_ATTR_CALL_TIMEOUT");
if ((status = ACIStmtExecute ((ACISvcCtx *)svchp, \
(ACIStmt *)stmthp, (ACIError *)errhp, (ub4)1, (ub4)0, \
(ACISnapshot *)0, (ACISnapshot *)0, (ub4)ACI_DEFAULT)) \
!= ACI_SUCCESS)
{
printf ( "ACIStmtExecute Failed with timeout: %dms\n", set_timeout);
Checkerr (errhp, status,(OraText *)"ACIStmtExecute");
}
/* 获得超时属性值*/
Checkerr (errhp,
ACIAttrGet(svchp, (ub4) ACI_HTYPE_SVCCTX,
(dvoid *) &get_timeout, (ub4) 0,
(ub4) ACI_ATTR_CALL_TIMEOUT, errhp),
"ACIAttrGet ACI_ATTR_CALL_TIMEOUT");
Checkerr (errhp, \
ACIStmtRelease ((ACIStmt *)stmthp, (ACIError *)errhp,(dvoid *)NULL, \
0, ACI_DEFAULT), (oratext *)"StmtRelease");
}
ACI_ATTR_SESSGET_FLAGS¶
- 模式:
读
- 描述:
返回 ACISessionGet 返回的session的类型,有以下类型返回:
ACI_SESSGET_FLAGS_NEW: 返回的连接不是从连接池中拿的,而是重新生成的一个新连接,这种情况一般是连接池中无可用连接的情况下。
ACI_SESSGET_FLAGS_POOLED_SERVER: 返回的连接是从连接池中拿的,说明连接池中还有空闲连接。
ACI_SESSGET_FLAGS_RAC_DATA_AFFN和ACI_SESSGET_FLAGS_SHARD两种模式暂不支持。
该属性暂不支持。
- 属性数据类型:
ub4
- 举例:
ub4 sessgetFlags = 0;
if (!(lstat = ACISessionGet(envhp, errhp2, &svchp, authp,(OraText *)poolName[0],
(ub4)poolNameLen[0], NULL, 0, NULL, NULL, NULL,
ACI_SESSGET_SPOOL)))
{
checkerr(errhp2, ACIAttrGet(svchp, ACI_HTYPE_SVCCTX,
dvoid *) &sessgetFlags, NULL, ACI_ATTR_SESSGET_FLAGS, errhp2));
if (sessgetFlags & ACI_SESSGET_FLAGS_NEW)
{
printf("Yes, it's new connection\n");
}
}