Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以通过OCI函数获取SID(“Oracle会话Id”)吗?_C_Oracle_Oracle Call Interface - Fatal编程技术网

我可以通过OCI函数获取SID(“Oracle会话Id”)吗?

我可以通过OCI函数获取SID(“Oracle会话Id”)吗?,c,oracle,oracle-call-interface,C,Oracle,Oracle Call Interface,有一个简单地使用OCI函数执行查询的示例 skip.. text *sql = (text *)"SELECT empno, ename FROM emp"; int id; text pad[4000]; strcpy(username, "scott"); strcpy(password, "tiger"); strcpy(dbname, "orcl"); OCIEnvCreate(&env, OCI_DEFAULT, 0, 0, 0, 0, 0,

有一个简单地使用OCI函数执行查询的示例

skip..

  text *sql = (text *)"SELECT empno, ename FROM emp";
  int id;
  text pad[4000];

  strcpy(username, "scott");
  strcpy(password, "tiger");
  strcpy(dbname, "orcl");

  OCIEnvCreate(&env, OCI_DEFAULT, 0, 0, 0, 0, 0, 0);
  OCIHandleAlloc(env, (dvoid *)&err, OCI_HTYPE_ERROR, 0, 0);

  if (r = OCILogon2(env, err, &svc, username, strlen(username), password, strlen(password), dbname, strlen(dbname), OCI_DEFAULT) != OCI_SUCCESS)
  {
    checkerr(err, "OCILogon2", r);
  }

  if (r = OCIStmtPrepare2(svc, (OCIStmt **)&stm, err, sql, strlen(sql), NULL, 0, OCI_NTV_SYNTAX, OCI_DEFAULT) != OCI_SUCCESS)
  {
    checkerr(err, "OCIStmtPrepare2", r);
    goto clean_up;
  }

...skip


  if (r = OCIDefineByPos(stm, &def, err, 1, &id, sizeof(id), SQLT_INT, 0, 0, 0, OCI_DEFAULT) != OCI_SUCCESS)
  {
    checkerr(err, "OCIDefineByPos", r);
    goto clean_up;
  }

  if (r = OCIDefineByPos(stm, &def, err, 2, pad, sizeof(pad), SQLT_STR, 0, 0, 0, OCI_DEFAULT) != OCI_SUCCESS)
  {
    checkerr(err, "OCIDefineByPos", r);
    goto clean_up;
  }

  if (r = OCIStmtExecute(svc, stm, err, 0, 0, 0, 0, OCI_DEFAULT) != OCI_SUCCESS)
  {
    checkerr(err, "OCIStmtExecute", r);
    goto clean_up;
  }

...skip
我想获取执行上述查询的会话的SID

我想我可以通过“社交目标”得到它。。 试图找到手册,但失败了


有办法吗?

您可以通过查询获得:

select sys_context('USERENV', 'SID') from dual;
这在以下查询中通常很有用:

select unique client_driver from v$session_connect_info where sid = sys_context('USERENV', 'SID');

谢谢你。。。有没有办法不经查询就得到它?