游标用for循环时不需要显式的打开、关闭、取数据、测试数据的存在、定义存放数据的变量等等,游标FOR 循环的语法:FOR record_name IN
(corsor_name[(parameter[,parameter]...)]
| (query_difinition)
LOOP
statements
END LOOP; 所以做如下修改:
declare
CURSOR jpPDM IS
-- 可以不需要显示声明变量
-- updateitem jpPDM%ROWTYPE;
begin
--不需要显式的打开游标
--open jpPDM;
FOR updateitem IN jpPDM LOOP
-- 不需要显式的取数据
--FETCH jpPDM INTO updateitem;
-- 不需要测试数据的存在与否
--if jpPDM%NOTFOUND
-- THEN
-- EXIT; --else
update em_item a set a.item_jp=updateitem.objectname,a.item_en=updateitem.drawingnameb
where a.rev = updateitem.rev and a.itemcd =updateitem.partsno;
commit;
--end if;
END LOOP;
end;
(corsor_name[(parameter[,parameter]...)]
| (query_difinition)
LOOP
statements
END LOOP; 所以做如下修改:
declare
CURSOR jpPDM IS
-- 可以不需要显示声明变量
-- updateitem jpPDM%ROWTYPE;
begin
--不需要显式的打开游标
--open jpPDM;
FOR updateitem IN jpPDM LOOP
-- 不需要显式的取数据
--FETCH jpPDM INTO updateitem;
-- 不需要测试数据的存在与否
--if jpPDM%NOTFOUND
-- THEN
-- EXIT; --else
update em_item a set a.item_jp=updateitem.objectname,a.item_en=updateitem.drawingnameb
where a.rev = updateitem.rev and a.itemcd =updateitem.partsno;
commit;
--end if;
END LOOP;
end;
--FOR updateitem IN jpPDM LOOP
loop FETCH jpPDM INTO updateitem; EXIT WHEN c_emp%NOTFOUND; update ...
...end loop;close jpPDM;
改为
LOOP
open jpPDM;
loop FETCH jpPDM INTO updateitem; EXIT WHEN c_emp%NOTFOUND; update ...
...end loop;
commit;
close jpPDM;