求救,如何将A表的值赋值给C表,A表的和C表的一个外键B表的主键
大侠们,帮忙看下,环境是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
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
都没试,但是凭经验应该能用
------其他解决方案--------------------看不明白 你还是把表结构贴出来吧
SELECT csourcebillid,nmoney FROM A where cbillid in (select cbillid from A where bestimateflag='Y' and dr=0 and pk_unit='1003')
为什么要这么写?
------其他解决方案--------------------
--兩個換下位置,不可以按你那樣寫在loop內的
END LOOP;
commit;
------其他解决方案-------------------- #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表。