最近项目出现一个比较奇怪的问题,如下:
在Java中先设定conn.setAutoCommit(false);
然后用同一个connection调用两个存储过程,
第一个dao.insertIntoTable(conn),这个存储过程会在两三个表
中插入一条记录。
第二个dao.getFromTable(conn),这个存储过程会去查询刚才插入
的那些记录
代码如下:
Dao dao = new Dao();
Connection conn= dao.getConnection();
conn.setAutoCommit(false);
dao.insertIntoTable(conn);
dao.getFromTable(conn);
conn.commit();问题:第二个存储过程dao.getFromTable(conn),有时候会查询不到
第一个存储过程插入的数据,当程序都运行完后,到DB去查询
却可以查询得到。
我的分析:在同一个事务中,数据的修改是可见的,理论上应该在第二个
存储过程中是可以查询到第一个存储过程的修改的。而且就用上面的
那个例子在本地环境中测试,是可以查询的到的,为什么在生产环境中却
不行呢,而且问题出现的频率挺高的。希望有大侠指点迷津!!!!
在Java中先设定conn.setAutoCommit(false);
然后用同一个connection调用两个存储过程,
第一个dao.insertIntoTable(conn),这个存储过程会在两三个表
中插入一条记录。
第二个dao.getFromTable(conn),这个存储过程会去查询刚才插入
的那些记录
代码如下:
Dao dao = new Dao();
Connection conn= dao.getConnection();
conn.setAutoCommit(false);
dao.insertIntoTable(conn);
dao.getFromTable(conn);
conn.commit();问题:第二个存储过程dao.getFromTable(conn),有时候会查询不到
第一个存储过程插入的数据,当程序都运行完后,到DB去查询
却可以查询得到。
我的分析:在同一个事务中,数据的修改是可见的,理论上应该在第二个
存储过程中是可以查询到第一个存储过程的修改的。而且就用上面的
那个例子在本地环境中测试,是可以查询的到的,为什么在生产环境中却
不行呢,而且问题出现的频率挺高的。希望有大侠指点迷津!!!!
解决方案 »
- 我有一需求,但不知道该如何设计表机构,而且界面也不知如何设计??在线求教。。
- expdp導出表
- 怎样提高 _RecordsetPtr::MoveNext()的速度?
- oracle对一个列分类查询
- 一个B/S结构ERP系统,出入库单据超过100万条,系统在单据调出、保存过程中速度比较慢,原因可能有哪些?有哪些办法可以提高速度?
- rownumber的问题?
- 请问资料库是什么东西,在oracle里面有什么用啊??
- Pro*C/C++能否集成到C++Builder环境中?
- 语句如何修改才能正确?有经验的高手一看就会!
- 关于一个简单的触发器去字段末尾空格和回车的问题
- 请教个用法
- oracle高级问题,请教高手
定义:
Cursor getdata(条件) is
调用:
for table.column in getdata(条件) loop
end loop;