declare
cursor cur is--声明游标cur
select pid,bdcdyh from (select t.pid,t.bdcdyh,rownum rn from bdcdyhlsb t inner join b_houseInfo tt on t.pid = tt.pid where rownum <= 5000 order by t.pid desc) where rn >= 0;--从A和B表中找到ID对应的openid,并对游标内数组排序
V_COUNTER NUMBER;--声明一个number类型的变量
BEGIN
V_COUNTER:=0;--初始化变量值为0
FOR ROW IN CUR LOOP--遍历游标
UPDATE test A SET A.bdcdyh=ROW.bdcdyh,A.dchy = '1' WHERE A.pid=ROW.pid;
V_COUNTER:=V_COUNTER+1;--每次循环变量值+1
IF(V_COUNTER>=100000) THEN
COMMIT;
V_COUNTER:=0;--每更新1000行,V_COUNTER值为1000时候,就提交给数据库提交后将变量归零,继续下一个1000行更新
END IF;
END LOOP;
COMMIT;
END;
注意:配合索引使用会有令你想不到的惊喜。