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 ?
给你个例子: 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; /
处理后,通过update语句根据主键更新
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 ?
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;
/