[Pgsql-ayuda] Oracle ROWNUM en Postgres

Gunnar Wolf gwolf@campus.iztacala.unam.mx
Thu, 9 Aug 2001 14:27:07 -0500 (CDT)


> Italo:
>
> Escribo a la lista por que tu buz=F3n de email esta lleno seg=FAn lo
> reporta nuestro email server.......

Guau! Agradezco al virus Sircam o a sea cual sea la raz=F3n por la cual el
buz=F3n de Italo estaba lleno! :)

> El ROWNUM de Oracle te numera cada registro despues de un select,
> desde 1 hasta 'n', en Postgres no tienes ROWNUM, sin embargo puedes
> hacer uso de la funcionalidad de postgres en algo as=ED como:
>
> Oracle:
>   SELECT * FROM tabla WHERE ROWNUM <=3D 10;
>
> En Postgres podr=EDas:
>   SELECT * FROM tabla WHERE <una condicion> LIMIT 10;
>
> Usando LIMIT en Postgres puedes controlar cuantas l=EDneas (rows) te
> despliega el select en cuestion. Puedes complementar el LIMIT de
> Postgres con el OFFSET
>
>   SELECT * FROM tabla WHERE <una condicion> LIMIT 10 OFFSET 30;
>
> En el ejemplo anterior, se saltar=E1 30 lineas (rows) antes de desplegar
> las 10 que califiquen para la condicion especificada.

Bueno... En un libro de SQL b=E1sico no encontr=E9 estos modificadores... Y=
 en
un programa que estoy haciendo... Puedes imaginarte las porquer=EDas que
estaba haciendo:

(pseudoPerl)
$ventana=3D5;
$primero=3D20;
$actual=3D1;
$sql=3D'SELECT cosas FROM tabla WHERE condiciones';
$sth=3D$dbh->prepare($sql);
while($actual++ < $primero) {
    $sth->fetchrow_array;
}
foreach $i (1..$ventana) {
    print "$i: ",$sth->fetchrow_array,"\n";
}

HORRIBLE el uso del while! Me daba asco, pena y (cuando habl=E1ramos de
miles de registros) miedo.

GRACIAS!

------------------------------------------------------------
Gunnar Wolf - gwolf@campus.iztacala.unam.mx - (+52)5623-1118
Desarrollo y Admon. de Sistemas en Red - FES Iztacala - UNAM
Departamento de Seguridad en Computo   -   DGSCA    -   UNAM
------------------------------------------------------------
Quidquid latine dictum sit, altum viditur.