换成这样试试: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;

解决方案 »

  1.   

    UPDATE dt_rpt_sjzbb_100001
                 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;
      

  2.   

    在9i以前的版本中,pl/sql块中不允许用select来作为一个列,改成如下就可以:begin
       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;
    /