Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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 ...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 23:09:49.


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
Copyright 1996-2007 Club Delphi