Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Paginação com Oracle e sql server e método de paginação genérico


Infelizmente, os métodos para restringir o intervalo de linhas retornados por uma consulta variam de um DBMS para outro:Oracle usa ROWNUM (veja a resposta do ocdecio), mas ROWNUM não funcionará no SQL Server.

Talvez você possa encapsular essas diferenças com uma função que recebe uma determinada instrução SQL e os números da primeira e da última linha e gera o SQL paginatd apropriado para o DBMS de destino - ou seja, algo como:
sql = paginated ('select empno, ename from emp where job = ?', 101, 150)

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

para Oracle e outra coisa para SQL Server.

No entanto, observe que a solução Oracle está adicionando uma nova coluna RN aos resultados com os quais você precisará lidar.