Infelizmente, os métodos para restringir o intervalo de linhas retornados por uma consulta variam de um DBMS para outro:Oracle usa ROWNUM (veja a resposta do ocdecio), mas ROWNUM não funcionará no SQL Server.
Talvez você possa encapsular essas diferenças com uma função que recebe uma determinada instrução SQL e os números da primeira e da última linha e gera o SQL paginatd apropriado para o DBMS de destino - ou seja, algo como:
sql = paginated ('select empno, ename from emp where job = ?', 101, 150)
que retornaria
'select * from (select v.*, ROWNUM rn from ('
+ theSql
+ ') v where rownum < 150) where rn >= 101'
para Oracle e outra coisa para SQL Server.
No entanto, observe que a solução Oracle está adicionando uma nova coluna RN aos resultados com os quais você precisará lidar.