| Home
RSS 2001 2002 2003 2004 2005 2006 2007 Letras Libros Pensar Cosas |
La cláusula ROWSInterBase ahora tiene, a partir de su versión 6.5,
una nueva cláusula,
FireBird también
a implementado algo por el estilo,
con su cláusula Pues bien, para usuarios que quieran tener algo portable, o que quieran que funcione con versiones anteriores, acá tienen un método para hacerlo. La alternativaLa idea consiste en realizar un procedimiento almacenado, que devuelva únicamente al cliente los registros comprendidos entre dos registros determinados.
El siguiente ejemplo muestra cómo realizar esto para la tabla
Básicamente, el código lleva la cuenta de dónde está en la consulta,
y va devolviendo los registros apropiados. Nótese que Ahora, para realizar la consulta del segundo al octavo país de la tabla resultado (segundas y octavas filas inclusive), podemos realizar la siguiente consulta.
Con este esquema, podemos realizar paginación de resultados de forma sencilla, definiendo un tamaño de página, y calculando
¿Qué ganamos? ¿Qué perdimos?Perdimos la inocencia con este terrible suceso de fork... pero me voy por las ramas. Con este método ganamos en portabilidad, porque funcione en varias versiones de los servidores. Por otro lado, perdemos en portabilidad con otras bases de datos, porque el SELECT de un procedimiento almacenado es algo muy poco estandarizado. Aunque, bien pensado, no existe un forma realmente portable de ofrecer esta funcionalidad de forma estándar. Lo que seguramente hemos perdido es la flexibilidad a la hora de armar consultas. Como los procedimientos almacenados se compilan una única vez, las "columnas" formadas por los parámetros de salida están fijos. Aunque, nuevamente cambiando el punto de vista, esto nos ofrece una interfaz más rígida, lo que es deseable cuando se desea tener mayor control sobre cómo se van a usar los datos. |