| 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: | Whole Thread | Raw Message | 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."
| 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 |