Если вы хотите, чтобы Oracle возвращал строки с N по M набора результатов, у вас есть несколько вариантов, в зависимости от того, что вы действительно хотите.
Если вы хотите, чтобы весь набор результатов был статическим - например, строки на странице 5 никогда не появятся на любой другой странице, вам придется либо:
Открыть курсор для всего набора результатов и выполнить нумерацию страниц в приложении.
Пусть хранимая процедура сохранит весь набор результатов в глобальной временной таблице и разбит на страницы. Это усложняет вашу хранимую процедуру, так как ей придется создавать набор результатов с нуля, когда приложение сообщает об этом.
Если вам не важно, что строки на странице 6 могли быть на странице 5 (результирующий набор является динамическим), тогда сделайте так, чтобы курсор выполнял обычную нумерацию страниц Oracle:
select [columns]
from (select [columns], rownum as rn
from [some such tables]
where [some such conditions]
and rownum < (:v_pagenum + 1) * :v_numrecs
order by [some expression])
where rn >= :v_pagenum * :v_numrecs;