oracle利用游标数据初始化

DECLARE
  V_NUM NUMBER;
  CURSOR CARDINFO IS
    SELECT MS.ID,
           MS.CARD_ID_DEC,
           MS.CARD_ID_DEX,
           MS.UMID,
           MS.EMPO,
           MS.ISSUER,
           MS.REMARKS,
           MS.MATCH_ID,
           MS.CARD_TYPE,
           MS.CARD_STATUS,
           MS.NAME_CN,
           MS.NAME_EN,
           MS.SEX,
           MS.OP_DATE,
           MS.OP_TYPE,
           MS.DEPT,
           MS.EMP_TYPE,
           MS.GUARD_GROUP,
           MS.DEPT_NAME,
           MS.VALIDTY,
           MS.VALID_BEGINTIME,
           MS.VALID_ENDTIME,
           MS.LCD,
           MS.LCU
      FROM CMS_CARD_USER_SYN_DEAL MD,
           CMS_CARD_USER_SYN MS,
           (SELECT MAX(T.ID) FID, T.CARD_ID_DEX FDEX, T.EMPO FEMPO
              FROM CMS_CARD_USER_SYN T
             WHERE T.OP_TYPE = '0002'
               AND T.CARD_STATUS = '0001'
             GROUP BY T.CARD_ID_DEX, T.EMPO) MF
     WHERE MD.CARD_ID = MS.CARD_ID_DEX
       AND MD.EMPO = MS.EMPO
       AND MS.CARD_ID_DEX = MF.FDEX
       AND MS.EMPO = MF.FEMPO
       AND MS.ID = MF.FID;
BEGIN
  V_NUM := 0;
  FOR C IN CARDINFO LOOP
    INSERT INTO CMS_CARD_USER_SYN_BAK
      (ID,
       CARD_ID_DEC,
       CARD_ID_DEX,
       UMID,
       EMPO,
       ISSUER,
       REMARKS,
       MATCH_ID,
       CARD_TYPE,
       CARD_STATUS,
       NAME_CN,
       NAME_EN,
       SEX,
       OP_DATE,
       OP_TYPE,
       DEPT,
       EMP_TYPE,
       GUARD_GROUP,
       DEPT_NAME,
       VALIDTY,
       VALID_BEGINTIME,
       VALID_ENDTIME,
       LCD,
       LCU)
    VALUES
      (C.ID,
       C.CARD_ID_DEC,
       C.CARD_ID_DEX,
       C.UMID,
       C.EMPO,
       C.ISSUER,
       C.REMARKS,
       C.MATCH_ID,
       C.CARD_TYPE,
       C.CARD_STATUS,
       C.NAME_CN,
       C.NAME_EN,
       C.SEX,
       C.OP_DATE,
       C.OP_TYPE,
       C.DEPT,
       C.EMP_TYPE,
       C.GUARD_GROUP,
       C.DEPT_NAME,
       C.VALIDTY,
       C.VALID_BEGINTIME,
       C.VALID_ENDTIME,
       C.LCD,
       C.LCU);
    UPDATE CMS_CARD_USER_SYN CU
       SET CU.OP_TYPE = '0004', CU.CARD_STATUS = '0004', CU.LCD = SYSDATE
     WHERE CU.OP_TYPE = '0002'
       AND CU.CARD_STATUS = '0001'
       AND CU.CARD_ID_DEX = C.CARD_ID_DEX
       AND CU.EMPO = C.EMPO;
    V_NUM := V_NUM + 1;
    IF V_NUM = 5000 THEN
      COMMIT;
      V_NUM := 0;
    END IF;
  END LOOP;
  COMMIT;
END;
/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值