“Limit” en Oracle

Entrada corta.

En el sistema que hago en el trabajo me encontré con un problema al imprimir grandes cantidades de información. El sistema simplemente imprimía unos 60 objetos de una lista y luego dejaba de trabajar…. así de simple. Sin dar ninguna explicación ni alguna exception.

Por lo que me vi obligado a filtrar la consulta en la sentencia oracle para no tener problemas.

Con lo que recordaba del mundo SQL, simplemente agregué un LIMIT 0, 50 a la consulta… pero no funcionaba😯

Buscando por aquí y por allá, llegué a la solución.

Independiente de la consulta, queda algo así:

SELECT * FROM
(
SELECT  CAMPOS_CONSULTA_ORIGINAL,
--AGREGAMOS  ESTO
Row_Number() OVER (ORDER BY ORDER BY CAMPO_DE_ORDENAMIENTO_ORIGINAL) MyRow
--LUEGO EL FROM Y WHERE NORMAL
--AGREGAMOS AL FINAL
) WHERE MyRow BETWEEN 0 AND 50;

Y eso sería todo. Siguiendo el ejemplo que vi en internet

SELECT * FROM
(
   SELECT t.*, Row_Number() OVER (ORDER BY name) MyRow FROM sometable t
)
WHERE MyRow BETWEEN 10 AND 20; 

Y estaríamos😀

Ahora si queremos agregar paginación, tenemos que usar un count y luego dividir🙂

Acerca de MaritoCares

Ingeniero Informático. Con tendencias a la programación en [C#, VB].NET, Java(Web principalmente...), PHP, JavaScript, algo mínimo de [ruby, python], y el clásico C.
Esta entrada fue publicada en Oracle, Tips y etiquetada . Guarda el enlace permanente.

2 respuestas a “Limit” en Oracle

  1. Obuxbux dijo:

    Estas son las cosas que me molestan de oracle, de repente te encuentras perdido y no sabes donde pillar alguna info decente en su web oficial..

    saludos y agregado a mi blogroll

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s