lo que tiene el archivo sql son llamadas a una funcion que carga los datos de 
personas (una renglon por cada persona...
Debajo se las paso por si les sirve...


CREATE OR REPLACE FUNCTION padrones.cargaper(oper smallint, documento character 
varying, tipodoc smallint, nombre character varying, sexo character varying, 
otros character varying, fechanac timestamp without time zone, locali character 
varying, provin character varying, direcci character varying)
  RETURNS void AS
$BODY$
declare
clavelugar integer;
claveprovincia integer;
begin
select padrones.provincias.codprov into claveprovincia FROM padrones.provincias 
where (padrones.provincias.provincia=trim(provin));
if claveprovincia IS NULL then
  if character_length(trim(provin))>0 then
    execute 'INSERT INTO padrones.provincias (provincia) VALUES ('''|| 
trim(provin)||''');';
    select padrones.provincias.codprov into claveprovincia FROM 
padrones.provincias where (padrones.provincias.provincia=trim(provin));
  else  
    claveprovincia=0;
  end if;  
end if;  
select padrones.localidades.claveloc into clavelugar FROM padrones.localidades 
where (padrones.localidades.nombreloc=trim(locali));
if clavelugar IS NULL then
 if character_length(trim(locali))>0 then
    execute 'INSERT INTO padrones.localidades (nombreloc,claveprov) VALUES 
('''|| trim(locali)||''','|| claveprovincia||');';
    select padrones.localidades.claveloc into clavelugar FROM 
padrones.localidades where (padrones.localidades.nombreloc=trim(locali));
 else
    clavelugar=0;
 end if;
end if; 

if oper=1 then -- insert
  execute 'INSERT INTO padrones.personas (numdoc, tipodoc, nombre, sexo, datos, 
fechanac) VALUES ('''|| trim(documento)||''' , '||tipodoc||' , 
'''||trim(nombre)||''' , '''||trim(sexo)||''' , '''||trim(otros)||''', 
'''||fechanac||''');';
  execute 'INSERT INTO padrones.personaloc (documento, tipodoc, claveloc, 
direccion) VALUES ('''||trim(documento)||''' , '||tipodoc||', 
'||clavelugar||','''||trim(direcci)||''');';
else --update
  execute 'UPDATE padrones.personas SET nombre='''||trim(nombre)||''' , 
sexo='''||trim(sexo)||''' , datos='''||trim(otros)||''', 
fechanac='''||fechanac||''' WHERE (numdoc='''|| trim(documento)||''' and 
tipodoc='||tipodoc||');';
  if not exists (select padrones.personaloc.claveloc FROM padrones.personaloc 
where (documento=trim(documento) and tipodoc=tipodoc and 
direccion=trim(direcci))) then   
    execute 'INSERT INTO padrones.personaloc (documento, tipodoc, 
claveloc,direccion) VALUES ('''|| trim(documento)||''' , '||tipodoc||', 
'||clavelugar||','''||trim(direcci)||''');';
  end if;
end if;
--return nombre;
--RETURN true;
end;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION padrones.cargaper(smallint, character varying, smallint, 
character varying, character varying, character varying, timestamp without time 
zone, character varying, character varying, character varying) OWNER TO gferro;


      Yahoo! Cocina
Recetas prácticas y comida saludable
http://ar.mujer.yahoo.com/cocina/
--
TIP 5: ¿Has leído nuestro extenso FAQ?
         http://www.postgresql.org/docs/faqs.FAQ.html

Responder a