Niestety, metody ograniczania zakresu wierszy zwracanych przez zapytanie różnią się w zależności od DBMS:Oracle używa ROWNUM (patrz odpowiedź od ocecio), ale ROWNUM nie będzie działać w SQL Server.
Być może możesz zawrzeć te różnice za pomocą funkcji, która pobiera dane wyrażenie SQL oraz numer pierwszego i ostatniego wiersza i generuje odpowiednią paginatd SQL dla docelowego DBMS - tj. coś takiego:
sql = paginated ('select empno, ename from emp where job = ?', 101, 150)
który zwróci
'select * from (select v.*, ROWNUM rn from ('
+ theSql
+ ') v where rownum < 150) where rn >= 101'
dla Oracle i coś innego dla SQL Server.
Należy jednak pamiętać, że rozwiązanie Oracle dodaje nową kolumnę RN do wyników, z którymi będziesz musiał sobie poradzić.