ORACLE. paginación con oracle. LIMIT en oracle.

Se trata de anidar las consultas. Introducimos nuestra consulta $sql dentro de otras dos consultas que controlan las filas obtenidas en la consulta.

$sql_paginada="
SELECT * FROM (
SELECT ROWNUM AS FILA, CONSULTA.* FROM (
$sql
)
CONSULTA
)
WHERE FILA > $Desde AND FILA <= $Hasta
";

Comentarios

  1. Buenas
    Tengo una duda, la paginación funciona perfectamente, pero necesito obtener el número de registros que devuleve la consulta interna, y así devolver el número de registro que podría devolver y el que realmente devuelvo tras la paginación.
    He probado varias cosas pero no encuentro la solución.
    Gracias

    ResponderEliminar
  2. Hay varias soluciones, la mas sencilla aunque habrá mejores, es hacer primero la consulta que tengas en $sql pero con COUNT:

    $sql_numero_filas="SELECT COUNT(*) FROM TABLA WHERE CONDICIONES"

    Y luego hacer la consulta paginada.

    También puedes recoger información del cursor V$SQL como ROWS_PROCESSED , END_OF_FETCH_COUNT ...

    En MySQL tras la consulta con LIMIT puedes lanzar: SELECT FOUND_ROWS(); que te devolverá la cantidad de filas que devolvería sin el LIMIT.

    Pero en ambos casos te recomiendo usar siempre SQL standard ya que te será válido para cualquier base de datos

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

PHP. módulo de un "long". Calcular dígito control de IBAN.

HTML div organizar contenido