遇到问题“组件'Y'必须在声明时声明”。如何修复代码?
AB表的PN变量与PARTS相同。 或者,当pn匹配时,可能还有另一种方法用其他表信息更新表吗?
DECLARE
CURSOR C1 IS
SELECT * FROM AB LEFT JOIN PARTS ON AB.PN=PARTS.PN where AB.FH_FC_WOF = 'FH' AND AB.OPERATION = 'OH' AND ab.pn=parts.pn ;
BEGIN
FOR i in C1
LOOP
UPDATE PARTS
SET PARTS.OH_HOURS = i.FLIGHT_DURATION
WHERE PARTS.PN=i.PN;
END LOOP;
COMMIT;
END;
答案 0 :(得分:0)
你真的需要一个游标吗?你不能只是做一个更新:
update parts p1 set p1.OH_HOURS = (select FLIGHT_DURATION
from FROM AB LEFT JOIN PARTS ON AB.PN = PARTS.PN
where AB.FH_FC_WOF = 'FH' AND AB.OPERATION = 'OH'
AND ab.pn = p1.pn)
子选择是否可能返回超过1行?如果是这种情况,您可能会更改为= (select MAX(FLIGHT_DURATION)
,或以其他方式将结果限制为1行(FETCH FIRST等)