Puoi usare una sottoquery per questo tipo
select *
from
( select *
from emp
order by sal desc )
where ROWNUM <= 5;
Dai un'occhiata anche all'argomento Su ROWNUM e sulla limitazione dei risultati in Oracle/AskTom per ulteriori informazioni.
Aggiorna :Per limitare il risultato sia con i limiti inferiore che superiore, le cose si gonfiano un po' di più con
select * from
( select a.*, ROWNUM rnum from
( <your_query_goes_here, with order by> ) a
where ROWNUM <= :MAX_ROW_TO_FETCH )
where rnum >= :MIN_ROW_TO_FETCH;
(Copiato dall'articolo AskTom specificato)
Aggiornamento 2 :A partire da Oracle 12c (12.1) è disponibile una sintassi per limitare le righe o iniziare con offset.
SELECT *
FROM sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
Vedi questa risposta per altri esempi. Grazie a Krumia per il suggerimento.