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.