La forma más natural y eficiente de realizar paginación es usar el constructo LIMIT/OFFSET (TOP en Sybase world). Una forma independiente de DB debería saber en qué motor se está ejecutando y aplicar la construcción de SQL adecuada.
Al menos, así lo he visto en el código de las bibliotecas independientes de DB. Puede abstraer la lógica de búsqueda una vez que obtenga los datos del motor con la consulta específica.
Si realmente está buscando una solución de sentencia SQL única, ¿podría mostrar lo que tiene en mente? Como el SQL para la solución de tabla temporal. Eso probablemente te brinde sugerencias más relevantes.
EDIT:
quería ver lo que estaba pensando, porque no podía ver una manera de hacerlo con tablas temporales y no usar una construcción específica del motor. Usaste constructos específicos en el ejemplo. Todavía no veo una forma de implementar paginación en la base de datos con solo SQL estándar (implementado). Podría traer toda la tabla en SQL estándar y página en la aplicación, pero eso es obviamente estúpido.
Entonces la pregunta ahora sería más como "¿Hay alguna forma de implementar la búsqueda sin usar LIMIT/OFFSET o equivalente?" y supongo que la respuesta es "Sanely, no". Podría intentar usar los cursores pero también será presa de las oraciones/comportamientos específicos de la base de datos.
Una idea de wacko (léase estúpida) que me acaba de ocurrir sería agregar una columna de página a la tabla, digamos crear una prueba de tabla (id int, nombre varchar, varchar de teléfono, página int) y luego puede obtener la página 1 con select * from table donde page = 1. Pero eso significa tener que agregar código para mantener esa columna, lo cual, de nuevo, solo podría hacerse trayendo toda la base de datos o utilizando construcciones específicas de la base de datos. Eso además de tener que agregar una columna diferente por cada posible orden y muchos otros defectos.
No puedo proporcionar pruebas, pero realmente creo que no puedes hacerlo de manera sensata.
Sí, probé con diferentes soluciones, pero parece imposible crear una versión más o menos portátil. – aku