Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pagination avec Oracle et sql server et méthode de pagination générique

Malheureusement, les méthodes pour restreindre la plage de lignes renvoyées par une requête varient d'un SGBD à l'autre :Oracle utilise ROWNUM (voir la réponse d'ocdecio), mais ROWNUM ne fonctionnera pas dans SQL Server.

Vous pouvez peut-être encapsuler ces différences avec une fonction qui prend une instruction SQL donnée et les premiers et derniers numéros de ligne et génère le SQL paginatd approprié pour le SGBD cible - c'est-à-dire quelque chose comme :

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

qui reviendrait

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

pour Oracle et autre chose pour SQL Server.

Cependant, notez que la solution Oracle ajoute une nouvelle colonne RN aux résultats que vous devrez traiter.