declare cursor c1 is select rowid from wjf.wjf_t01 where state is null; type typ_row_id is table of urowid index by binary_integer; v_doi typ_row_id; begin open c1; loop fetch c1 bulk collect into v_doi limit 10000; forall v_rec in 1 .. v_doi.count update wjf.wjf_t01 set state = 1 where rowid = v_doi(v_rec); commit; exit when c1%notfound; end loop; close c1; commit; end; URSOR cur IS SELECT * FROM t_ref; TYPE rec IS TABLE OF t_ref%ROWTYPE; recs rec; BEGIN OPEN cur; WHILE (TRUE) LOOP FETCH cur BULK COLLECT INTO recs LIMIT 100; FORALL i IN 1 .. recs.COUNT INSERT INTO t VALUES recs (i); COMMIT; EXIT WHEN cur%NOTFOUND; END LOOP; CLOSE cur; END;