大侠们,帮忙看下,环境是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; 执行时出现错误:
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; 执行时出现错误:
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;
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表。
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都没试,但是凭经验应该能用