Der er kun en ret indviklet måde at gøre dette på, hvilket er en rigtig smerte med Oracle. De skal bare implementere en LIMIT/OFFSET-klausul...
Rækkenummeret tildeles efter rækken er valgt af where-sætningen, så et rækkenummer altid skal starte med 1. where rownum > x
vil altid vurderes til falsk.
Rownum bliver også tildelt inden sorteringen er udført , så rækken vil ikke være i samme rækkefølge som din ordre ved siger.
Du kan omgå begge problemer med et undervalg:
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
Hvis du ikke har brug for at sortere (men kun derefter), kan du forenkle til
select a,b,c, rn from
( select a,b,c, rownum rn from the_table where rownum < Y )
where rn > X