Paginado en Oracle con rownum

Escrito el May 13, 2008
Guardado en desarrollo web, oracle |

En Oracle no tenemos un limit como en MySQL, pero podemos simularlo usando el rownum y subQuerys.
Por lo general hacemos querys a las cuales le pedimos una maxima cantidad con un:

1
WHERE rownum <= 10

donde 10 es la cantidad que queremos limitar, esto traerá los primeros 10 resultados.

Pero que pasa si queremos que nos devuelva 10 resultados apartir de la posicion 30?

Despues de un rato largo de leer asktom.oracle.com (sitio de referencia indiscutida si de oracle se trata), esta es la solucion):

1
2
3
4
5
6
7
SELECT *
FROM
  (SELECT rownum rnum,
     a.*
   FROM(mi_query) a
   WHERE rownum <= :m)
WHERE rnum >= :n;

donde :n es la posicion inicial y :m es la cantidad.
Lo mejor de todo es que es muy sencillo.

Comments

Dejenos su opinion