Puede usar una subconsulta para esto como
select *
from
( select *
from emp
order by sal desc )
where ROWNUM <= 5;
Consulte también el tema Sobre ROWNUM y la limitación de resultados en Oracle/AskTom para obtener más información.
Actualizar :Para limitar el resultado con los límites inferior y superior, las cosas se hinchan un poco más
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;
(Copiado del artículo de AskTom especificado)
Actualización 2 :A partir de Oracle 12c (12.1), hay una sintaxis disponible para limitar filas o comenzar en compensaciones.
SELECT *
FROM sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
Ver esta respuesta para más ejemplos. Gracias a Krumia por la pista.