Det finns bara ett ganska invecklat sätt att göra detta på, vilket är riktigt jobbigt med Oracle. De borde bara implementera en LIMIT/OFFSET-klausul...
Radnumret tilldelas efter raden har valts av where-satsen, så att ett rownum alltid måste börja med 1. where rownum > x
kommer alltid att utvärderas till falskt.
Dessutom tilldelas rownum innan sorteringen är klar , så radnumret kommer inte att vara i samma ordning som din beställning av säger.
Du kan komma runt båda problemen med ett underval:
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
Om du inte behöver sortera (men bara då) kan du förenkla till
select a,b,c, rn from
( select a,b,c, rownum rn from the_table where rownum < Y )
where rn > X