मैं इस तरह कुछ के साथ जाऊंगा:अद्यतन के लिए पंक्तियों का चयन करने के लिए एक कर्सर, और पहले दस उपलब्ध कराने के लिए LIMIT क्लॉज का उपयोग करें।
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;
असल में, मैं सबसे पहले देखूंगा कि सभी बकाया पंक्तियों को एक सेट के रूप में संसाधित करना बहु-थ्रेडिंग से बेहतर होगा या नहीं।
फिर अगर मैंने तय किया कि मुझे मल्टी-थ्रेडिंग के किसी रूप की आवश्यकता है, तो मैं समानांतर सक्षम के साथ पाइपलाइन किए गए कार्यों को देखूंगा (मान लीजिए कि मैं एंटरप्राइज़ संस्करण पर था)।