直接写dml,不写过程update t_infos a set F_ORDER=F_ORDER-1 where exists (select 1 from t_infos b where a.f_order>b.f_order and b.f_date> sysdate);update t_infos set f_order=0 where f_date > sysdate;我没验证,供参考

解决方案 »

  1.   

    你把dml直接放过程里是一样的,不需要写循环
      

  2.   

    如果按你的意思来写过程,我觉得会出问题阿。因为当你的游标打开时取道的信息,和你修改后的信息会出现不一致,这时你则么处理呢?也就是当你的update语句执行时会影响到你以后的执行,应该作相应的处理。
      

  3.   

    没有仔细看,但是至少应该把两个update语句颠倒顺序一下。
      

  4.   

    我试了那个dml,结果不行,把原来的所有F_DATE为空的行的F_order全减1了,把第一个F_DATE不为空的行的F_order减了1,其它的没变