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.
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 |