CREATE OR REPLACE FUNCTION cen_attribution_personne_auteur_point_faune(integer) RETURNS integer AS $BODY$ DECLARE id_entite_courante alias for $1; myrec RECORD; var_ese_id_entite bigint; var_chaine_auteur character varying; var_individu_auteur character varying; var_compteur integer; BEGIN FOR myrec IN SELECT CASE WHEN observateur is null THEN 'ANONY' ELSE REPLACE(observateur,'$','&') END AS observateur FROM point_faune_a_importer WHERE id_entite=id_entite_courante LOOP RAISE NOTICE 'nouvel ligne de résultat'; var_chaine_auteur:=myrec.observateur; --RAISE NOTICE ' var_chaine_auteur %', var_chaine_auteur; var_compteur:=1; var_individu_auteur:=null; LOOP var_individu_auteur:=split_part(var_chaine_auteur,'&',var_compteur); --RAISE NOTICE ' var_individu_auteur %', var_individu_auteur; IF length(var_individu_auteur)=0 THEN EXIT; END IF; EXECUTE $req$ INSERT INTO personne_est_auteur_donnee (id_entite, code_personne, ordre) VALUES ($req$||id_entite_courante||$req$, split_part('$req$||var_chaine_auteur||$req$','&','$req$||var_compteur||$req$'), $req$||var_compteur||$req$) $req$; --RAISE NOTICE ' ESE numéro %', id_entite_courante; --RAISE NOTICE ' Auteur numéro %', var_compteur; --RAISE NOTICE ' nouvel auteur attribué %', var_individu_auteur; var_compteur:=var_compteur+1; var_individu_auteur:=null; --RAISE NOTICE 'compteur vaut maintenant : %', var_compteur; END LOOP; END LOOP; RETURN 1; END; $BODY$ LANGUAGE 'plpgsql';