在Oracle中批量收集更新百万行

时间:2018-06-15 16:46:50

标签: oracle

我在这里查了一下帖子的数量,我想要更新百万条记录不在桌子上,而是一次不同的桌子。请指导我。

这是我在表上成功应用的代码,但我想在同一程序中应用于不同的其他表。

DECLARE
    CURSOR ACATTR_cur
    IS
        SELECT acattr_id
          FROM ACATTR
         WHERE optcounter IS NULL;

    TYPE ACATTR_tt IS TABLE OF ACATTR_cur%ROWTYPE
        INDEX BY PLS_INTEGER;

    ACATTRs   ACATTR_tt;
BEGIN
    OPEN ACATTR_cur;

    LOOP

        FETCH ACATTR_cur BULK COLLECT INTO ACATTRs LIMIT 10;

        DBMS_OUTPUT.put_line (ACATTRs.COUNT);

exit when ACATTR_cur%notfound;


        FORALL indx IN 1 .. ACATTRs.COUNT
     --   LOOP
            UPDATE ACATTR
               SET optcounter = 0
             WHERE acattr_id =ACATTRs(indx).acattr_id;

           -- NULL;
       -- END LOOP;

      -- DBMS_OUTPUT.put_line (ACATTRs.COUNT);
    END LOOP;

    CLOSE ACATTR_cur;
END;

0 个答案:

没有答案