¿Cómo escribir sentencias SQL de paginación en una base de datos Oracle?
Empresa interna:
Parámetros de paginación: tamaño = 20 páginas = 2;
No utilice la consulta ORDER BY;
Utilice dos Subconsultas anidadas de filtros (recomendado).
Sentencia SQL:
SELECT *
FROM (SELECT ROWNUM AS rowno, t.*
FROM DONORINFO t
DONDE t.CUMPLEAÑOS ENTRE HASTA_FECHA ('19800101', 'aaaammdd')
Y HASTA_FECHA ('20060731', 'aaaammdd')
Y ROWNUM lt;= 20* 2) table_alias
WHERE table_alias.ROWNUM gt; 20*(2-1);
Extensión:
wnum siempre comienza desde 1, si el primero es If. la condición no se cumple, el wnum de la segunda condición vuelve a ser 1, y así sucesivamente. El expediente no cumple las condiciones.
Se puede entender así: wnum es una secuencia, que es el orden en que la base de datos Oracle lee los datos del archivo de datos o del búfer. El primer registro que obtiene tiene un valor de número de fila de 1 y el segundo registro tiene un valor de número de fila de 2.
Y así sucesivamente: cuando se utilizan "gt;, gt;=, =, entre.....y" estas condiciones, el primer registro extraído del búfer o archivo de datos El valor de Crownum es 1 , que no cumple con las condiciones de la declaración SQL, se eliminará y luego se recuperará un registro. El número de fila del siguiente registro seguirá siendo 1, se eliminará nuevamente y así sucesivamente, no habrá más datos.