大侠们,帮忙看下,环境是ORACLE,利用游标循环执行赋值:
DECLARE 
    v_nmoney         A.nmoney%TYPE; 
    v_csourcebillid  A.csourcebillid%TYPE; 
    CURSOR   c_A  IS 
        SELECT csourcebillid,nmoney FROM A where cbillid in (select cbillid from A  where bestimateflag='Y' and dr=0 and pk_unit='1003') 
BEGIN   
    OPEN   c_A; 
    LOOP 
        FETCH  c_A INTO v_csourcebillid,v_nmoney; 
        UPDATE  C SET bbye =v_nmoney WHERE  ddlx=v_csourcebillid ;
        EXIT WHEN  c_A%NOTFOUND; 
        commit;
    END   LOOP; 
    CLOSE  c_A; 
END; 执行时出现错误:

解决方案 »

  1.   

    看不明白 你还是把表结构贴出来吧
    SELECT csourcebillid,nmoney FROM A where cbillid in (select cbillid from A where bestimateflag='Y' and dr=0 and pk_unit='1003')
    为什么要这么写?
      

  2.   


    --兩個換下位置,不可以按你那樣寫在loop內的
      END LOOP;  
      commit;
      

  3.   

     #2楼,还是不可以,提示:pls-00103 出现符号 fetch 在需要下列之一时:
    begin fucntion package
    progma procedure subtype type  use<an identifier> 
    <a double-quoted delimited-identifier> form current cursor
    这个错误在网上看似有挺多的,但是解决方法不适合我这个,那个大侠,帮忙重新写个语句。
    #1 楼,表的结构大致是这样可以描述:
    A:{pk_A,bbje,pk_B} B:{pk_B},C:{pk_C,bbje,pk_B} 如何将C表的bbje赋值给A表。
      

  4.   

    方案1
    update A
    set A.bbje=C.bbje
     FROM A INNER JOIN C ON A.pk_B= C.pk_B其他条件自己补充
    下边这种方法貌似也行方案2
    update (select A.bbje bbje,C.bbje bbjeTemp from A,C where A.pk_B=C.pk_B )
    set bbje=bbjeTemp都没试,但是凭经验应该能用