从游标中循环取数的时候,如果在过程中改变了值,游标中还能有么?
比如:
cursor cur_test is select a,b,c,d,e from test where c = '2';for rec_t in cur_test loop
update test set c = '1' where a = rec_t.a and c = '2';
end loop;表test 内容
a b c d e
001 100 2 200101 200101
001 100 2 200102 200102
001 100 2 200103 200103
001 100 1 200104 200104在这个执行过程中,游标中的集合是否会发生变化。
也就是说游标是一个动态的过程???
还是声明一个游标就把这个游标所对应的数据集就放到内存了?急求帮助??
分不够可以加??
谢谢!
比如:
cursor cur_test is select a,b,c,d,e from test where c = '2';for rec_t in cur_test loop
update test set c = '1' where a = rec_t.a and c = '2';
end loop;表test 内容
a b c d e
001 100 2 200101 200101
001 100 2 200102 200102
001 100 2 200103 200103
001 100 1 200104 200104在这个执行过程中,游标中的集合是否会发生变化。
也就是说游标是一个动态的过程???
还是声明一个游标就把这个游标所对应的数据集就放到内存了?急求帮助??
分不够可以加??
谢谢!
解决方案 »
- 请教oracle触发器的问题。谢谢 。。
- 求SQL语句
- 通过oracle数据库访问mysql数据库
- 如何根据明细表的状态变化,实时修改主表的状态
- 如何使用触发器修改插入的新值???
- 如何将oracle的数据库移植到mysql5.0上?
- 如何写这个insert?
- oracle的64bit版本需要怎样的操作系统,vs2005能不能开发64bit程序?
- 菜鸟问题,用conn sys/change_on_install@test as sysdba 连接不上服务器上的数据库
- 期待你的加入。ORACLE QQ 联盟。现在正在自学ORACLE 9i,希望能更好的和大家交流。
- 我数据量300万条,查询速度非常的慢,请问如何解决
- To_date问题
不过别忘了在执行DML后加commit;
DECLARE
CURSOR c IS SELECT null FROM t WHERE b<100 FOR UPDATE;
BEGIN
FOR i IN c LOOP
UPDATE t SET b=1 WHERE CURRENT OF c; --游标必须是for update的才能引用current of
END LOOP;
END;
/
ORA-01555快照过旧:回退段号3在名称为"RBS2"过小执行过程中出现这种情况每UPDATE一句都COMMIT了非常感谢楼上2位帮忙?
在看看这个?
感激不尽
这是我写的一个例子
实际中游标是两个表的关联
我需要从游标中取到相应的值
做相应的变动?
你那样的写的话
n_temp number;
通过for rec in cur_t loop
n_temp = rec.XX
end loop
取不到值了??