declare
type refcursor is ref cursor;
v_cursor refcursor;
type array_rowid is table of rowid;
type array_value is table of varchar2(20);
a_rowid array_rowid := array_rowid();
a_value array_value := array_value();
begin
open v_cursor for 'select rowid from (
select rowid from tse_payments h order by h.d_createdon asc ) where rownum<10000';
loop
fetch v_cursor bulk collect into a_rowid limit 5000;
if a_rowid.count() > 0 then
forall i in a_rowid.first .. a_rowid.last
DELETE FROM tse_payments t where t.rowid=a_rowid(i);
end if;
exit when v_cursor%notfound;
end loop;
close v_cursor;
end;
/