Una solucion bastante aceptable si estas utilizando el cache del servidor es la siguiente:
Creas un Cursor con todos los registros (dependiendo por supuesto del filtro) y para mostrarlos simplemente los insertas en un lazo FOR
Algo asi, si estas en la pagina 5 y estas mostrando de 20 en 20 el for deberia ir algo asi:
Código PHP:
cursor select registro1, registro2, etc
from mytrabla
where = .....
numregmostrar := 20;
paginaactual := 5;
for j=(numregmostrar*paginaactual ) .. (numregmostrar*paginaactual ) + numregmostrar loop
-- muestro el registro
htp.print(j.registro);
end loop;
claro que tienes que pasar como parametro la pagina que estas utilizando y como el select es el mismo para cada pagina ya lo tienenes en cache del server.
OJO: tienes que activar el cache del server para ello si no cada ocasion que realizas el select se generara nuevamente y esto te consumira tiempo y recurso de disco.