Desafortunadamente, los métodos para restringir el rango de filas devueltas por una consulta varían de un DBMS a otro:Oracle usa ROWNUM (vea la respuesta de ocdecio), pero ROWNUM no funcionará en SQL Server.
Tal vez pueda encapsular estas diferencias con una función que toma una declaración SQL dada y los números de la primera y última fila y genera el SQL paginatd apropiado para el DBMS de destino, es decir, algo como:
sql = paginated ('select empno, ename from emp where job = ?', 101, 150)
que volvería
'select * from (select v.*, ROWNUM rn from ('
+ theSql
+ ') v where rownum < 150) where rn >= 101'
para Oracle y algo más para SQL Server.
Sin embargo, tenga en cuenta que la solución de Oracle agrega una nueva columna RN a los resultados con los que tendrá que lidiar.