Saya akan menggunakan sesuatu seperti ini:Kursor untuk memilih baris agar pembaruan, dan menggunakan klausa LIMIT untuk mendapatkan sepuluh pertama yang tersedia.
create table gm_temp
as select rownum id, table_name obj_name, date '2011-01-01' + rownum create_date
from all_tables where rownum < 500;
CREATE TYPE tab_number IS TABLE OF NUMBER;
DECLARE
cursor c_table IS
SELECT id FROM gm_temp ORDER BY create_date DESC FOR UPDATE OF id SKIP LOCKED;
t_table_src tab_number := tab_number();
BEGIN
OPEN c_table;
FETCH c_table BULK COLLECT INTO t_table_src LIMIT 10;
CLOSE c_table;
dbms_output.put_line(':'||t_table_src.count||':'||t_table_src(1));
END;
Sebenarnya, pertama-tama saya akan melihat apakah memproses SEMUA baris yang beredar sebagai satu set akan lebih baik daripada multi-threading.
Kemudian jika saya memutuskan bahwa saya memerlukan beberapa bentuk multi-threading, saya akan melihat fungsi pipelined dengan paralel diaktifkan (dengan asumsi saya menggunakan Enterprise Edition).