-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Funcion para insertar personas en la base. -- select f_crear_personas( cant_personas_a_crear ); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_crear_personas(integer); CREATE OR REPLACE FUNCTION f_crear_personas(_cant INTEGER) RETURNS INTEGER AS $BODY$ DECLARE _apellido text; _nombre text; _usuario text; i integer; _persona integer; _dc integer; nro_doc integer; loc integer; loc2 integer; loc_cant integer; BEGIN nro_doc := 1000000; SELECT count(localidad) into loc_cant FROM mug_localidades; FOR i IN 1 .. _cant LOOP _apellido := 'Apellido ' || i::varchar; _nombre := 'Nombre ' || i::varchar; _usuario := i::text; nro_doc := nro_doc + i; SELECT localidad into loc FROM mug_localidades LIMIT 1 OFFSET RANDOM () * (loc_cant); SELECT localidad into loc2 FROM mug_localidades LIMIT 1 OFFSET RANDOM () * (loc_cant); INSERT INTO mdp_personas (apellido, nombres, sexo, fecha_nacimiento, nacionalidad, usuario) VALUES (_apellido, _nombre, 'F', '01-01-1970', 1, _usuario); _persona := (SELECT currval('mdp_personas_seq')); INSERT INTO mdp_personas_documentos (persona, tipo_documento, nro_documento, pais_documento) values (_persona, 0, nro_doc, 54); -- 1er dato censal INSERT INTO mdp_datos_censales (persona, fecha_relevamiento, fecha_actualizacion) values (_persona, '01-01-2010','01-01-2010'); _dc := (SELECT currval('mdp_datos_censales_seq')); INSERT INTO mdp_datos_personales (dato_censal, procedencia_localidad) values (_dc, loc); -- 2do dato censal INSERT INTO mdp_datos_censales (persona, fecha_relevamiento, fecha_actualizacion) values (_persona, '25-02-2010','25-02-2010'); _dc := (SELECT currval('mdp_datos_censales_seq')); INSERT INTO mdp_datos_personales (dato_censal, procedencia_localidad) values (_dc, loc2); -- DOCENTES. Inserto un docente cada 10 docentes IF MOD(_persona,5) = 0 THEN INSERT INTO sga_docentes (persona, legajo, estado) VALUES (_persona, 'L' || _persona::text, 'A'); END IF; END LOOP; RETURN i; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_crear_personas(integer) ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_crear_personas (integer) FROM public; GRANT EXECUTE ON FUNCTION f_crear_personas (integer) to public; /* -- delete from mdp_personas_documentos; -- delete from mdp_personas; select f_crear_personas(10000); -- select * from mdp_personas; */