数据库环境
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production问题:
对数据进行更新.更新成功后有commit;但是通过存储过程查询.(偶尔出现)是更新前的数据.如果直接使用SQL查询 能得到正确的结果.过段时间.用存储过程查询.得到的结果是更新后的.
请问如何解决?
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production问题:
对数据进行更新.更新成功后有commit;但是通过存储过程查询.(偶尔出现)是更新前的数据.如果直接使用SQL查询 能得到正确的结果.过段时间.用存储过程查询.得到的结果是更新后的.
请问如何解决?
2、确定你更新的与存储过程查询的是同一个表,别一个是实体表,一个是物化视图
3、oracle的特性就是事物一致,不可能出现你说的情况,肯定是你逻辑或者描述有偏差的地方,重新检查一下
A用户执行存储过程修改了一个数据.(执行成功)其它用户去查(存储过程),修改过的数据,发现没改过来.于是我用PLSQL登录进去调用(存储过程)得到的结果是没更新前的.我再把存储过程中查询语句单独执行.得到了正确的结果.再过了会儿,去执行存储过程,又得到了正确的结果.
commit放在这个存储过程里,不要在外部commit
没commit,再打开窗口就是其他session了
当然查的是没改之前的不明白你的意思.情况是这样的.
A用户执行存储过程修改了一个数据.(执行成功)其它用户去查(存储过程),修改过的数据,发现没改过来.于是我用PLSQL登录进去调用(存储过程)得到的结果是没更新前的.我再把存储过程中查询语句单独执行.得到了正确的结果.再过了会儿,去执行存储过程,又得到了正确的结果.