CREATE FUNCTION cen_insertion_ligne_faune() RETURNS integer AS $_$ DECLARE myrec RECORD; var_gid bigint; var_protocole bigint; var_id_lot_donnee character varying(50); BEGIN FOR myrec IN SELECT gid, ese_id_entite, id_lot_donnee, protocole /* ajouter plus tard les attributs validation_id_personne et validation_id_structure */ FROM ligne_faune_a_importer WHERE ese_id_entite IS NULL LOOP var_gid:=myrec.gid; var_protocole:=myrec.protocole; -- ese var_id_lot_donnee:=myrec.id_lot_donnee; -- a ventiler dans les métadonnées EXECUTE $req$ INSERT INTO entite_spatiale_ecologique (id_entite, id_protocole, validation_id_personne, validation_id_structure, lot_donnee_id_lot, type_entite) VALUES(NEXTVAL('entite_spatiale_ecologique_id_entite_seq'),$req$||quote_literal(var_protocole)||$req$, NULL, NULL, $req$||quote_literal(var_id_lot_donnee)||$req$, 'ligne_faune') $req$; RAISE INFO 'nouvelle ESE de type ligne_faune ajoutée'; EXECUTE $req$ UPDATE ligne_faune_a_importer SET ese_id_entite=currval('entite_spatiale_ecologique_id_entite_seq'), date_ventilation=current_date WHERE gid=$req$||quote_literal(var_gid)||$req$ $req$; RAISE INFO 'ligne courante de la table ligne_faune_a_importer mise à jour'; EXECUTE $req$ INSERT INTO ligne_faune( ese_id_entite, date_obs, date_debut_obs, date_fin_obs, date_textuelle, phenologie, effectif, effectif_min, effectif_max, type_effectif, id_taxon, "precision", remarque, geometrie, lieu_dit) SELECT ese_id_entite, date_obs, date_debut_obs, date_fin_obs, date_textuelle, phenologie, effectif, effectif_min, effectif_max, type_effectif, id_taxon, "precision", remarque, geometrie, lieu_dit FROM ligne_faune_a_importer WHERE gid=$req$||var_gid||$req$ $req$; RAISE INFO 'nouvelle ligne_faune ajouté'; END LOOP; RETURN 1; END; $_$ LANGUAGE plpgsql;