利用游标循环删除数据

# 清除重复数据(数据量较大时使用,每1000条提交一次)
declare
v_cnt number := 0;
begin 
  -- v_cnt number := 0;
  loop
    DELETE FROM T_MS_INDEX WHERE BIZ_TYPE = 'T_MS_PHYEXA_ASSISTEXA' AND ROWNUM < 1000 AND F_PK IN
    (
    SELECT F_PK FROM 
      (
        SELECT F_PK, ID, ROW_NUMBER() OVER(partition by ID order by F_PK) rn 
        FROM T_MS_INDEX WHERE biz_type = 'T_MS_PHYEXA_ASSISTEXA'
      ) where rn > 1
    );
    v_cnt := SQL%ROWCOUNT;
    COMMIT;
    DBMS_OUTPUT.put_line(v_cnt||'行已删除');
    EXIT when v_cnt <= 0;
  END LOOP;
    END;

原文地址:https://www.cnblogs.com/Memories-off/p/10435453.html