Re: rutina para genear pines

From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: mmiranda(at)americatel(dot)com(dot)sv
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: rutina para genear pines
Date: 2005-05-10 02:05:57
Message-ID: 20050510020557.GB21188@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


No te creo que usara toda la CPU; aca se demora 0% de CPU en decir que
la funcion no es valida.

create unique index pin_pines on pines (pin);

create or replace function crea_10_pines(int) returns void language plpgsql
volatile as $$
declare
total int := 0;
posibles text := '1234567890';
nuevo_pin text;
offset int;
y int;
largo alias for $1;
begin
LOOP
nuevo_pin := '';
FOR y IN 1 .. largo LOOP
offset := ceil(random()*length(posibles));
nuevo_pin := nuevo_pin || substr(posibles, offset, 1);
END LOOP;

BEGIN
INSERT INTO pines (pin) VALUES (nuevo_pin);
total := total + 1;
EXCEPTION WHEN others THEN
raise notice 'duplicado %', nuevo_pin;
END;
IF (total >= 10) THEN
RETURN;
END IF;
END LOOP;
end;
$$;

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"No renuncies a nada. No te aferres a nada."

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2005-05-10 04:05:45 Re: Ejemplo de funcion, o vista?
Previous Message Alvaro Herrera 2005-05-10 01:20:51 Re: Programar un borrado de datos