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

解决方案 »

  1.   

    不影响.
    不过别忘了在执行DML后加commit;
      

  2.   

    你的游标这么用才更合适:
    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;
    /
      

  3.   


    ORA-01555快照过旧:回退段号3在名称为"RBS2"过小执行过程中出现这种情况每UPDATE一句都COMMIT了非常感谢楼上2位帮忙?
    在看看这个?
    感激不尽
      

  4.   


    这是我写的一个例子
    实际中游标是两个表的关联
    我需要从游标中取到相应的值
    做相应的变动?
    你那样的写的话
    n_temp number;
    通过for rec in cur_t loop
            n_temp = rec.XX
        end loop
    取不到值了??