ORACLE使用游标更新数据

--使用游标逐条更新数据
DECLARE
I INTEGER;
TYPE TYPE_TEST IS TABLE OF TBL_NAME%ROWTYPE; 
TBL_TEST  TYPE_TEST  ;
BEGIN
SELECT * BULK COLLECT INTO TBL_TEST FROM  TBL_NAME;
FORALL I IN TABLE_TEST.FIRST .. TBL_TEST.LAST
UPDATE TBL_NAME2 T
        SET T.A = TBL_TEST(I).B;
          WHERE T.ROWID = TBL_TEST(I).T1ROW;
COMMIT;
END;
/    

--游标分批(10条)更新
DECLARE
CURSOR C_TBL IS SELECT A,B FROM TESTA;
TYPE TYP_TBL IS TABLE  OF  TESTA%ROWTYPE;
TBL_ TBL   TYP_TBL;
BEGIN 
OPEN  C_TBL;
LOOP
FETCH  C_TBL   BULK COLLECT INTO  TBL_ TBL   LIMIT 10;
   EXIT  WHEN  C_TBL.COUNT = 0;
      FORALL  I IN  C_TBL.FIRST ..  C_TBL.LAST
     UPDATE   TESTB T
     SET T.C =  TBL_ TBL (I) .A
      WHERE   T.D =  TBL_ TBL (I) .B;
  DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT);
  COMMIT;
  END LOOP;
  CLOSE  C_TBL;
END;





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值