sql >> Base de Datos >  >> RDS >> Oracle

Paginación con servidor Oracle y sql y método de paginación genérico

Desafortunadamente, los métodos para restringir el rango de filas devueltas por una consulta varían de un DBMS a otro:Oracle usa ROWNUM (vea la respuesta de ocdecio), pero ROWNUM no funcionará en SQL Server.

Tal vez pueda encapsular estas diferencias con una función que toma una declaración SQL dada y los números de la primera y última fila y genera el SQL paginatd apropiado para el DBMS de destino, es decir, algo como:

sql = paginated ('select empno, ename from emp where job = ?', 101, 150)

que volvería

'select * from (select v.*, ROWNUM rn from ('
 + theSql
 + ') v where rownum < 150) where rn >= 101'

para Oracle y algo más para SQL Server.

Sin embargo, tenga en cuenta que la solución de Oracle agrega una nueva columna RN a los resultados con los que tendrá que lidiar.