Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Paging mit Oracle- und SQL-Server und generischer Paging-Methode

Leider variieren die Methoden zum Einschränken des Zeilenbereichs, der von einer Abfrage zurückgegeben wird, von einem DBMS zum anderen:Oracle verwendet ROWNUM (siehe Antwort von ocdecio), aber ROWNUM funktioniert nicht in SQL Server.

Vielleicht können Sie diese Unterschiede mit einer Funktion kapseln, die eine gegebene SQL-Anweisung und die Nummern der ersten und letzten Zeile nimmt und die entsprechende paginierte SQL für das Ziel-DBMS generiert – also so etwas wie:

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

was zurückgeben würde

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

für Oracle und etwas anderes für SQL Server.

Beachten Sie jedoch, dass die Oracle-Lösung den Ergebnissen eine neue Spalte RN hinzufügt, mit der Sie sich befassen müssen.