"不是根据游标的值更新表的内容,而是针对游标的值进行部分处理后,返回前台进行显示"
哪么,就是显示不同结果集,而实际上没有更新表数据
哪可以用oracle函数实现,如:decode(),nvl(),nvl2()等等

解决方案 »

  1.   

    可以通过游标检索出来,
    处理后,通过update语句根据主键更新
      

  2.   

    DECLARE
       CURSOR c1 IS SELECT * from T1 for update of c1 ;
       r1  c1%ROWTYPE;
    BEGIN
       OPEN c1
       LOOP
          FETCH c1 INTO r1;          UPDATE t1 SET XXXXX
              WHERE CURRENT OF C1;
             
       END LOOP;
       CLOSE C1;
    END;Do U Mean That ?
      

  3.   

    给你个例子:
    CREATE OR REPLACE procedure xlxj_update_gtjhxx
    (jhbm varchar)
    is
    lgtbm varchar(16);
    cursor tg_cur  is
    select gtbm from xlxjt_gtjh where jhbm=jhbm ;--杆塔计划插入时修改有关杆塔的相应信息
    begin
     --declare gtbm varchar(16),crow int
            open  tg_cur ; loop
    fetch  tg_cur into  lgtbm;
    exit when  tg_cur  %notfound;            begin              update xlxjt_gtjh set jd=(select jd from xlxjt_gtxx where xlxjt_gtxx.gtbm=lgtbm),
                         wd=(select wd from xlxjt_gtxx where xlxjt_gtxx.gtbm=lgtbm),
                          gtmc=(select  gtmc from xlxjt_gtxx where xlxjt_gtxx.gtbm=lgtbm),
                          sftg=(select   sftg from xlxjt_gtxx where xlxjt_gtxx.gtbm=lgtbm)
                           where xlxjt_gtjh.gtbm in (select gtbm from xlxjt_gtxx where xlxjt_gtxx.gtbm=lgtbm) and xlxjt_gtjh.jhbm=jhbm;
                end   ;
    end loop;
             close tg_cur ;
         commit;
    end;
    /