Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Limitando el número de registros de una consulta (https://www.clubdelphi.com/foros/showthread.php?t=80692)

dec 01-07-2006 01:37:30

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:

Código SQL [-]
select top 25 *
from   Clientes

También podemos indicar un porcentaje del número total de registros:

Código SQL [-]
select top 5 percent *
from   Clientes

En DB2, se puede utilizar una cláusula equivalente al final de la consulta:

Código SQL [-]
select *
from   Clientes
fetch first 25 rows only

Oracle resuelve el problema gracias a una pseudo columna, de nombre rownum:

Código SQL [-]
select *
from   Clientes
where  rownum <= 25

¿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:

Código SQL [-]
create procedure NPrimeros(N integer)
    returns (Nombre varchar(35), Direccion varchar(35)) as
begin
    for select Nombre, Direccion from Clientes
        into   :Nombre, :Direccion do
    begin
        suspend;
        N = N - 1;
        if (N = 0) then exit;
    end
end

Más adelante, podemos lanzar consultas como la siguiente:

Código SQL [-]
select *
from   NPrimeros(25)

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:06:15.

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