oracle批量操作

-------批量新增---------
DECLARE
  CURSOR cur IS
    SELECT a.XH, a.ZYH, a.BJH, a.XM, a.XBM, a.SFZJH, a.CSRQ
      FROM xsxxgl_xsjbxx a
     WHERE not exists (SELECT 1 FROM zs_xsxx2 b WHERE a.xh = b.xsid); --定义游标
  TYPE rec IS TABLE OF cur%ROWTYPE; --定义类型
  recs rec;
BEGIN
  OPEN cur; --打开游标
  WHILE (TRUE) LOOP
    --循环条件
    FETCH cur BULK COLLECT --取游标里的值
      INTO recs LIMIT 100; --提交条件,每100条提交
    FORALL i IN 1 .. recs.COUNT --这个是个计数器,用来确保提交的条数,也是循环
      INSERT INTO zs_xsxx2
        (XSID, BDZY, BJDM, XM, XB, SFZH, CSRQ)
      VALUES
        (recs(i).XH,
         recs(i).ZYH,
         recs(i).BJH,
         recs(i).XM,
         recs(i).XBM,
         recs(i).SFZJH,
         recs(i).CSRQ); --插入目标表
    COMMIT; --提交
    EXIT WHEN cur%NOTFOUND; --游标结束条件
  END LOOP; --停止循环
  CLOSE cur; --关闭游标
END;

-----更新字段值---------
update (select T1.bjdm a, T2.bjh b, T1.bdzy c, T2.Zyh d
          from zs_xsxx2 T1, xsxxgl_xsjbxx T2
         where T1.xsid = T2.xh)
   set a = b, c = d;

---批量新增

 这是把A表中不存在B表的数据查询出来并且插入B表;

---更新字段

这是更新B表的两个字段值(即同步B表,使得B表的这两个字段值和A表的相等)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值