是否有可能从一个进程连接到Oracle(通过OCI),然后从另一个进程连接到同一个数据库会话?
在我当前的应用程序中,有两种方法可以访问数据库:同步数据库和异步数据库(通过使用单独的进程,通过套接字进行通信).问题是这两种方法实现了不同的会话.
如果我尝试在一个会话上进行例如更新,那么尝试从另一个会话更新同一个表而不提交,我在OCI调用上挂起.
更糟糕的是,如果从一个会话设置会话变量 - 另一个会话没有看到它(这正是名称所说的......).
我有以下示例:
#include <stdio.h>
#include <map>
#include <conio.h>
typedef std::map<int,int> mi;
typedef std::map<int,int>::iterator mit;
mit myfind(mi mymap)
{
mit it = mymap.find(1);
printf("in function: %d\n",it->second);
return it;
}
void main()
{
mi a;
a.insert(std::pair<int,int>(1,2));
a.insert(std::pair<int,int>(3,4));
mit it = myfind(a);
printf("out of function: %d\n",it->second);
_getch();
}
Run Code Online (Sandbox Code Playgroud)
输出是:
功能:2
功能不足:-17891602
为什么?迭代器是否无效?为什么?提前致谢.