- 论坛徽章:
- 0
|
同一线程里面先后两次调用 OCIEnvCreate,调用的代码都在同一个函数db_init里面封装起来了,在这个db_init函数里面有一个局部结构体变量p_ora_con,结构体里面定义了一些相关的句柄,其中OCIEnvCreate调用代码如下,
rc = OCIEnvCreate(&(p_ora_con->p_env), OCI_DEFAULT,
NULL, NULL, NULL, NULL, 0, NULL);
第一次调用成功返回,执行相关的数据库查询也能成功操作,操作完毕后进行释放结果集并释放相关的句柄,均能成功返回,然后执行OCITerminate,OCITerminate也可以成功返回,
rc = OCIHandleFree(CON_ORA(_h)->p_stmt, OCI_HTYPE_STMT);
if (rc != OCI_SUCCESS)
{
OCICHECK(CON_ORA(_h)->p_env, rc);
}
rc = OCILogoff(CON_ORA(_h)->p_svc, CON_ORA(_h)->p_err);
if (rc != OCI_SUCCESS)
{
OCICHECK(CON_ORA(_h)->p_err, rc);
}
/* Note: p_svc handle was released by OCILogoff() function. */
rc = OCIHandleFree(CON_ORA(_h)->p_err, OCI_HTYPE_ERROR);
if (rc != OCI_SUCCESS)
{
OCICHECK(CON_ORA(_h)->p_env, rc);
}
rc = OCITerminate(OCI_DEFAULT);
if (rc != OCI_SUCCESS)
{
OCICHECK(CON_ORA(_h)->p_env, rc);
}
现在的问题是,我第二次调用db_init进行OCIEnvCreate初始化OCI环境句柄,但是此函数一直挂起来不返回,想问各位能不能给我点提示,谢谢各位~ |
|