Limitando el número de registros de una consulta
El espía se introdujo sigilosamente en la sala de ordenadores. Con paso felino se dirigió a una de las terminales de datos y la encendió. No tuvo problemas con la contraseña; el departamento de escuchas había interceptado la palabra clave hacía una semana gracias a una indiscreción telefónica de uno de los empleados de la Compañía. Una vez que la pantalla indicó que el sistema estaba listo, ordenó la ejecución del programa de accesos a la base de datos. Tenía que averiguar el nombre de algunas de las personas que habían sido utilizadas, sin su consentimiento, en los peligrosos experimentos biológicos. Tecleo una sencilla instrucción SQL y pulsó un botón con el ratón. De repente, se dio cuenta de que algo andaba mal. La pantalla vomitaba página tras página de datos, y no había forma de detenerla. Le quedaban dos minutos para apagar el ordenador, eliminar las huellas y salir corriendo. Pero aquel trasto seguía con su verborrea, insistiendo en mostrar todos los nombres de los afectados. Si aquello no se detenía, era hombre acabado. Desesperado, sacó su Magnum de la cartuchera y disparó cuatro tiros a la maldita máquina ...
Para que usted no tenga que llegar a esos extremos, he aquí algunos trucos para limitar el número de filas que puede devolver una consulta SQL. Comencemos con SQL Server, donde podemos indicar la limitación mediante una cláusula especial después de la palabra select:
También podemos indicar un porcentaje del número total de registros:
En DB2, se puede utilizar una cláusula equivalente al final de la consulta:
Oracle resuelve el problema gracias a una pseudo columna, de nombre rownum:
¿Y qué pasa con nuestro viejo amigo InterBase? Que no tiene operadores especiales para limitar el tamaño de una consulta. Para lograr un efecto semejante, debemos definir un procedimiento almacenado:
Más adelante, podemos lanzar consultas como la siguiente:
Así que busque otra justificación si lo que desea es pegarle un tiro a su ordenador, pistolero ... |
La franja horaria es GMT +2. Ahora son las 16:19:36. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi