PostgreSQL - generador de datos aleatoreos

   
Vista:
Imágen de perfil de outrera

generador de datos aleatoreos

Publicado por outrera (35 intervenciones) el 16/04/2014 22:46:00
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
CREATE TABLE generador.nombre
(
  id_nombre bigint NOT NULL,
  nombre character varying(60),
  id_sexo integer,
  CONSTRAINT nombre_pkey PRIMARY KEY (id_nombre)
)
 
CREATE OR REPLACE FUNCTION generador.clave_aleatoria()
  RETURNS character varying AS
$BODY$DECLARE o_codigo varchar;
BEGIN
	SELECT INTO o_codigo trunc(random() * (9999-1000) + 1000)::varchar || substring(trim(generador.apellido_aleatorio()),1,2) || trunc(random() * (9999-1000) + 1000)::varchar  ;
 
 
	return o_codigo;
 
 
END;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION generador.clave_aleatoria()
  OWNER TO postgres;
 
 
CREATE OR REPLACE FUNCTION generador.fecha_aleatoria()
  RETURNS date AS
$BODY$DECLARE
	fecha date;
BEGIN
 
	select into fecha cast( now() - '60 year'::interval * random()  as date );
	return fecha;
END;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION generador.fecha_aleatoria()
  OWNER TO postgres;
 
 
CREATE OR REPLACE FUNCTION generador.genera_seudonimo(p_nombre character varying, p_apellido character varying)
  RETURNS character varying AS
$BODY$DECLARE
 v_cantidad integer;
 v_cadena varchar;
BEGIN
 
 
 
	LOOP
	     v_cadena := trim(substring( (replace(p_nombre,' ','') || replace(p_apellido,' ','')) ,1,16))|| trunc(random() * (9999-1000) + 1000)::varchar;
	     select into v_cantidad  count (*) from acceso.usuario where seudonimo=v_cadena;
	     EXIT WHEN v_cantidad  = 0;  -- same result as previous example
	END LOOP;
 
 
 
 
	return v_cadena;
 
END;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION generador.genera_seudonimo(character varying, character varying)
  OWNER TO postgres;
 
 
 
 
CREATE OR REPLACE FUNCTION generador.get_random_number(integer, integer)
  RETURNS integer AS
$BODY$
DECLARE
    start_int ALIAS FOR $1;
    end_int ALIAS FOR $2;
BEGIN
    RETURN trunc(random() * (end_int-start_int) + start_int);
END;
$BODY$
  LANGUAGE plpgsql VOLATILE STRICT
  COST 100;
ALTER FUNCTION generador.get_random_number(integer, integer)
  OWNER TO postgres;
 
 
CREATE OR REPLACE FUNCTION generador.nombre_aleatorio()
  RETURNS character varying AS
$BODY$DECLARE
 v_cantidad integer;
 p_id_nombre integer;
 p_nombre  varchar;
BEGIN
 
 
	select into v_cantidad count(*) from generador.nombre;
 
 
	p_id_nombre:=(1 + (v_cantidad - 1) * random())::int;
 
 
	select into p_nombre nombre from generador.nombre where id_nombre=p_id_nombre;
 
	return p_nombre ;
END;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION generador.nombre_aleatorio()
  OWNER TO postgres;
 
 
 
CREATE OR REPLACE FUNCTION generador.obtener_tipo_sexo(p_nombre character varying)
  RETURNS integer AS
$BODY$DECLARE
 p_tipo integer;
BEGIN
 
	Select into p_tipo id_sexo from generador.nombre where nombre=p_nombre;
	return p_tipo;
 
END;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION generador.obtener_tipo_sexo(character varying)
  OWNER TO postgres;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder