取不到数据,但数据肯定是存进去了。。。

marcovanbasten 2008-07-14 05:09:31
我现在在实际应用遇到了这么一个问题
我的应用是部署在weblogic8里的,利用JDBC访问ORACLE9
我有个函数,假设为A,新取的数据库链接,作事务处理,把数据库存到某个表中,最后提交。然后另一个函数,假设为B,也是新取的数据库链接,去从那个表取数据,但居然没取到。后来用PL/SQL去查,是有的。2个函数的执行时间是很近的。
需要额外说明的是,函数B是先取的数据库连接,然后在函数B里调用的函数A,也就是说,这2个函数所使用的数据库连接,不是同一个。

也不知道我说明白了没有。

再简单写一下吧:

FUNCTION A
{
1、取数据库连接 connA,
2、去调用函数B(函数B里自己取数据库连接connB,利用这个connB写库,事务处理,完整后提交)
3、然后利用connA再去取数,发现没有,但事后用PL/SLQ查,是有的。。。
}
...全文
101 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyijie007 2008-07-15
  • 打赏
  • 举报
回复
我也不是很明白。。
AFIC 2008-07-15
  • 打赏
  • 举报
回复
connA当参数传到函数b里边用吧,
1/5000概率想调试都没门阿
doer_ljy 2008-07-15
  • 打赏
  • 举报
回复
给你出个主意,和不合用看楼住的需求了。
在B开始后先对B的全表select * from table for update一下。
然后再插入数据。
A执行到区数据的时候,使用select ... from table for update。
这样,直到B提交,A的查询才会生效,避免了B尚未提交,A就开始查询的可能性。
我估计楼主的问题就在这里。

最后A结束的最后,别忘了commit或者rollback
ziyouzai 2008-07-15
  • 打赏
  • 举报
回复
FUNCTION A
{
2、去调用函数B(函数B里自己取数据库连接connB,利用这个connB写库,事务处理,完整后提交)
1、取数据库连接 connA,
3、然后利用connA再去取数,发现没有,但事后用PL/SLQ查,是有的。。。
}
qiyousyc 2008-07-15
  • 打赏
  • 举报
回复
多线程的简单问题。正常现象。
就是b正在执行,a已经执行完成了。
oracledbalgtu 2008-07-14
  • 打赏
  • 举报
回复
参考方法:
1。通过添加dbms_output.put_line('**'),测试程序流程是否正确。
2。修改你的代码,把两个操作独立开。不要交叉调用。
你的这个问题没有遇到过,理论上按你的处理来看即使不该应该也没有问题。
关注.

[Quote=引用楼主 marcovanbasten 的帖子:]
我现在在实际应用遇到了这么一个问题
我的应用是部署在weblogic8里的,利用JDBC访问ORACLE9
我有个函数,假设为A,新取的数据库链接,作事务处理,把数据库存到某个表中,最后提交。然后另一个函数,假设为B,也是新取的数据库链接,去从那个表取数据,但居然没取到。后来用PL/SQL去查,是有的。2个函数的执行时间是很近的。
需要额外说明的是,函数B是先取的数据库连接,然后在函数B里调用的函数A,也就是说,这2个函数所…
[/Quote]
vc555 2008-07-14
  • 打赏
  • 举报
回复
可能B还没执行完,A就执行到第三步了。事后用PL/SLQ查时,B已经执行完了。
percychein 2008-07-14
  • 打赏
  • 举报
回复
虽然我不是很清楚问题在哪,不过我想提出来2点
1.你确认的时机是否正确?
2.是否与ORACLE的自主事务处理有关系?
marcovanbasten 2008-07-14
  • 打赏
  • 举报
回复
发生这种问题的概率不大,大概1/5000吧,但绝对有。很是奇怪,我该怎么办呢?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧