Re: funcion random()

From: Espartano <espartano(dot)mail(at)gmail(dot)com>
To: Miguel <mmiranda(at)123(dot)com(dot)sv>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: funcion random()
Date: 2006-05-25 18:11:27
Message-ID: d353bd50605251111l696b4732k40e3745d1086fcb5@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On 5/25/06, Miguel <mmiranda(at)123(dot)com(dot)sv> wrote:
> hola gente, no encuentro en el manual alguna funcion que retorne un
> valor aleatorio entre cero un limite superior, por ejemplo la funcion
> rand de perl o similiar rand(25) = 16.
> la funcion random de postgres retorna entre 0.0 y 1.0 .
>
> He hecho esta funcion para probar la funcion random, la idea es que le
> envio de paramentro cuantas veces debe ejecutarse y me devoleria un
> record, pero no funciona, alguien tiene una idea de porque?
>
> CREATE OR REPLACE FUNCTION probar_random(integer)
> RETURNS SETOF RECORD AS
> $BODY$
> DECLARE
> pasadas ALIAS FOR $1;
> r record;
> BEGIN
> FOR r IN
> FOR i IN 1..pasadas LOOP
> SELECT CEIL(RANDOM() * 100) as rand;
> END LOOP;
> LOOP
> RETURN next r;
> END LOOP;
> END;
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE;
>
>
> me sale este error
>
> ERROR: syntax error at or near "FOR" at character 9
> QUERY: SELECT FOR i IN 1
> CONTEXT: SQL statement in PL/PgSQL function "probar_random" near line 6
>
>
> saludos a todos
> ---

La variable i no esta declarada, en tu select no le estas asignando
nada a tu record, seria algo asi como: SELECT r CEIL(RANDOM() * 100)
as rand;

y despues de eso te falta hacer return next;

al menos eso es lo que puedo ver a simple vista.

--
http://espartano.linuxreal.org/blog/html/index.php

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Luis Rodrigo Gallardo Cruz 2006-05-25 18:24:00 Re: funcion random()
Previous Message Daniel Alejandro Higa Kawanishi 2006-05-25 17:51:35 Re: Ayuda en recuperar una base de datos