从游标中循环取数的时候,如果在过程中改变了值,游标中还能有么?
比如:
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在这个执行过程中,游标中的集合是否会发生变化。
也就是说游标是一个动态的过程???
还是声明一个游标就把这个游标所对应的数据集就放到内存了?急求帮助??
分不够可以加??
谢谢!
不过别忘了在执行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
取不到值了??