存储过程中for循环中存在INSERT、UPDATE,如何减少commit的频率,控制多少次commit一次,例如500次commit一次

    declare
        record_count NUMBER;
        is_commnum     NUMBER;

    begin

        -- 初始化参数
        record_count := 0;
        is_commnum   := 500; -- 默认500次,commit一次

        FOR rec IN (SELECT * FROM TABLENAME WHERE ....) LOOP
        
          record_count := record_count + 1;
          INSERT INTO TABLENAME(...) VALUES (...);
          UPDATE TABLENAME SET COL1 = values1, ..... WHERE COLn = xxxxx;
          
          GOTO is_need_commit;        
          <<is_need_commit>>
          out_flag := '0';
          IF record_count MOD is_commnum = 0 THEN
              COMMIT;
          END IF;

        END LOOP;
        COMMIT:
    end;


 

猜你喜欢

转载自blog.csdn.net/li_tiantian/article/details/86060615