Есть только довольно запутанный способ сделать это, что является настоящей болью для Oracle. Они должны просто реализовать предложение LIMIT / OFFSET ...
rownum назначается после строка была выбрана предложением where, так что rownum всегда должен начинаться с 1. where rownum > x
всегда будет иметь значение false.
Кроме того, rownum присваивается до выполнения сортировки , поэтому значение rownum не будет в том же порядке, что и ваш заказ по словам.
Обойти обе проблемы можно с помощью подвыбора:
select a,b,c, rn from
( select a,b,c, rownum rn from
( select a,b,c from the_table where x = ? order by c)
where rownum < Y)
where rn > X
Если вам не нужно сортировать (но только потом), вы можете упростить до
select a,b,c, rn from
( select a,b,c, rownum rn from the_table where rownum < Y )
where rn > X