下面提到的程序旨在:
- 从 cpTemplateWorkCard 中存在的 cp_work_card 获取 jobid
- 从 cp_work_card 中获取 jobid 的第一条记录
- 将其更新为 cpTemplateworkCard
然而,cpTemplateworkCard 的所有行都使用最后一行中找到的 bHours 的值进行更新。但是,变量中的值在执行时被正确存储
DECLARE
jobId VARCHAR2(30);
bHours float;
idx NUMBER(4,0);
CURSOR c1
IS
select distinct
cp.job_id
from cp_work_card cp,
cptemplateworkcard temp
where cp.job_id = temp.JOBID;
BEGIN
idx:=1;
DBMS_OUTPUT.PUT_LINE('id : jobId : bHours');
OPEN c1;
LOOP
FETCH c1 INTO jobId;
EXIT WHEN C1%NOTFOUND;
select cpw.BUDGET_HOUR
into bHours
from cp_work_card cpw
where cpw.job_id=jobId
AND rownum<2;
/*DBMS_OUTPUT.PUT_LINE('Budget Hours: '||bHours);
UPDATE TO CPTEMPLATE*/
UPDATE cptemplateworkcard tmpCard
SET tmpCard.BUDGET_HOUR=bHours
where tmpCard.JOBID=jobId;
DBMS_OUTPUT.PUT_LINE(idx || ' : ' || jobId || ' : ' || bHours);
idx:= idx+1;
END LOOP;
CLOSE c1;
END;