DECLARE
  vQty integer;  cursor c is
    select rowid, fpickarea, fbin, farticle from SJ_TBINARTICLES_20070106;BEGIN  DELETE FROM SJ_TBINARTICLES_20070106;
 COMMIT;
 
  INSERT INTO SJ_TBINARTICLES_20070106(farticle, fpickarea, fbin)
  select a.fgid farticle, 
  (select fpickarea from tpickschemedtl where fcode = '-' and farticle = a.fgid and FITEMNO = 1) fpickarea,
  (select fpickbin from tpickschemedtl where fcode = '-' and farticle = a.fgid and FITEMNO = 1) fpickbin
  from tarticle a;  for r in c loop
    select nvl(PWM_PUBFUNC.QtyToStr(SUM( TBINARTICLES.FQTY ), TBINARTICLES.FQPC ), 0) into vQty from tbinarticles where fbin = r.fbin and farticle = r.farticle;
    update SJ_TBINARTICLES_20070106 set fqty = vQty where rowid = r.rowid;
  end loop;
  commit;
END;

解决方案 »

  1.   

    SUM( TBINARTICLES.FQTY ), TBINARTICLES.FQPC
    -----------------------------
    除非对其进行group by,否则这里不能直接引用TBINARTICLES.FQPC。
      

  2.   

    在哪里GROUP BY,在update的前面吗
      

  3.   

    select nvl(PWM_PUBFUNC.QtyToStr(SUM( TBINARTICLES.FQTY ), TBINARTICLES.FQPC ), 0) into vQty from tbinarticles where fbin = r.fbin and farticle = r.farticle;
    ------------------------------------------
    是这句有语法错误,系统无法理解。
    没有group by,就可能有多个不同的 FQPC,你让系统取哪个呢?或者简单点,改成下面这样也可以,不知道是否满足你的情况:select nvl(PWM_PUBFUNC.QtyToStr(SUM( TBINARTICLES.FQTY ), max(TBINARTICLES.FQPC) ), 0) into vQty from tbinarticles where fbin = r.fbin and farticle = r.farticle;