换成这样试试:FOR cur_bb IN (SELECT * FROM v$_rpt_sjzbb_100001_05) LOOP
BEGIN
UPDATE dt_rpt_sjzbb_100001
SET item_3 = ((SELECT SUM(item_3)
FROM dt_rpt_sjzbb_100001
WHERE tjrq = to_char(SYSDATE, 'yyyymmdd') AND
(hxh = 9 OR hxh = 10)) - cur_bb.sum_rk)
WHERE hxh = 8;
end;
end loop;
BEGIN
UPDATE dt_rpt_sjzbb_100001
SET item_3 = ((SELECT SUM(item_3)
FROM dt_rpt_sjzbb_100001
WHERE tjrq = to_char(SYSDATE, 'yyyymmdd') AND
(hxh = 9 OR hxh = 10)) - cur_bb.sum_rk)
WHERE hxh = 8;
end;
end loop;
SET item_3 = - cur_bb.sum_rk+(SELECT SUM(item_3)
FROM dt_rpt_sjzbb_100001
WHERE tjrq = to_char(SYSDATE, 'yyyymmdd') AND
(hxh = 9 OR hxh = 10))
WHERE hxh = 8;
for cur_bb in (select *
from v$_rpt_sjzbb_100001_05) loop
begin
update dt_rpt_sjzbb_100001
set item_3 =
(select sum (item_3) - cur_bb.sum_rk
from dt_rpt_sjzbb_100001
where tjrq = to_char (sysdate, 'yyyymmdd')
and (hxh = 9 or hxh = 10))
where hxh = 8;
end;
end loop;
end;
/