oracle 游标在取出一行数据后修改这行数据,返回的游标里面会不会同时更新值

酒比花香 2011-09-29 10:14:06
如题,哪位大侠知道? 非常紧急!!
...全文
443 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
酒比花香 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hanzs 的回复:]
游标里的数据不会被改变,不会出现脏读的
[/Quote]
我找到下面的地址
http://apq-hibernate.iteye.com/blog/1032655
如果不能更改返回的游标中的数据,那只好再新建一个游标然后返回了?数据量很大的话,那岂不是很浪费资源。
酒比花香 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiaobn_cn 的回复:]
如果你指的是客户端A游标取出数据后,客户端B更新表中的数据,客户端A的游标里面会不会同时更新值,那么答复是:不会。
[/Quote]
下面是代码:
-- 打开游标
open v_temp for select D_COL1,L_COL2,L_COL3,L_COL4,L_COL5,C_COL1,C_COL2 from TEMP_TBSCCREPORT;
loop
fetch v_temp into v_calldate,v_callcount,v_successcount,v_failcount,v_onlinecount,v_date,v_time ;
exit when v_temp%notfound;
v_date := to_char(v_calldate,'yyyymmdd');
v_time :=to_char(v_calldate,'hh24:mi');
--08:45-09:15
if v_time >= '08:45' and v_time<= '09:15'
then
update TEMP_TBSCCREPORT
set C_COL1 = v_date,C_COL2 ='08:45-09:15' where D_COL1=v_calldate ;
...
end loop;
commit;
return v_temp;
那么这个游标里面的值有没有变化?
hanzs 2011-09-29
  • 打赏
  • 举报
回复
游标里的数据不会被改变,不会出现脏读的
xiaobn_cn 2011-09-29
  • 打赏
  • 举报
回复
如果你指的是客户端A游标取出数据后,客户端B更新表中的数据,客户端A的游标里面会不会同时更新值,那么答复是:不会。
hanzs 2011-09-29
  • 打赏
  • 举报
回复
这里的值不会变化的,游标取的还是你update之前的值

[Quote=引用 3 楼 leehu1987 的回复:]
引用 1 楼 xiaobn_cn 的回复:
如果你指的是客户端A游标取出数据后,客户端B更新表中的数据,客户端A的游标里面会不会同时更新值,那么答复是:不会。

下面是代码:
-- 打开游标
open v_temp for select D_COL1,L_COL2,L_COL3,L_COL4,L_COL5,C_COL1,C_COL2 from TEMP_TBSCCREPORT;
……
[/Quote]
xiaobn_cn 2011-09-29
  • 打赏
  • 举报
回复
不知道楼主的需求是什么,一般在使用游标的时候都是不考虑游标打开后产生的数据变更的,没有说不停的重建游标这种用法。
lxyzxq2008 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 leehu1987 的回复:]

引用 1 楼 xiaobn_cn 的回复:
如果你指的是客户端A游标取出数据后,客户端B更新表中的数据,客户端A的游标里面会不会同时更新值,那么答复是:不会。

下面是代码:
-- 打开游标
open v_temp for select D_COL1,L_COL2,L_COL3,L_COL4,L_COL5,C_COL1,C_COL2 from TEMP_TBSCCREPOR……
[/Quote]不会改变

17,377

社区成员

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

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