Es gibt nur einen ziemlich komplizierten Weg, dies zu tun, was bei Oracle eine echte Qual ist. Sie sollten nur eine LIMIT/OFFSET-Klausel implementieren...
Die Zeilennummer wird nach zugewiesen die Zeile wurde durch die where-Klausel ausgewählt, sodass eine Zeilennummer immer mit 1 beginnen muss. where rownum > x
wird immer als falsch ausgewertet.
Außerdem wird rownum vor dem Sortieren zugewiesen , also wird die Zeilennummer nicht in der gleichen Reihenfolge sein, wie Ihre Bestellung von sagt.
Sie können beide Probleme mit einem Subselect umgehen:
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
Wenn Sie nicht sortieren müssen (aber nur dann), können Sie zu
vereinfachen select a,b,c, rn from
( select a,b,c, rownum rn from the_table where rownum < Y )
where rn > X