CREATE FUNCTION cen_attribution_habitat_point_habitat() RETURNS integer
AS $_$
DECLARE
myrec RECORD;
var_id_entite bigint;
var_complexe_habitat character varying;
var_habitat_simple character varying;
var_compteur integer;
BEGIN
FOR myrec IN SELECT id_entite, REPLACE(complexe_habitat,'$','&') AS complexe_habitat FROM point_habitat WHERE complexe_habitat IS NOT NULL AND id_entite NOT IN (SELECT id_entite FROM point_habitat_presente_habitat) LOOP
RAISE NOTICE 'nouvel ligne de résultat';
var_id_entite:=myrec.id_entite;
var_complexe_habitat:=myrec.complexe_habitat;
RAISE NOTICE ' var_complexe_habitat %', var_complexe_habitat;
var_compteur:=1;
var_habitat_simple:=NULL;
LOOP
var_habitat_simple:=split_part(var_complexe_habitat,'&',var_compteur);
RAISE NOTICE ' var_habitat_simple %', var_habitat_simple;
IF length(var_habitat_simple)=0 THEN EXIT;
END IF;
IF var_habitat_simple NOT IN (SELECT code_habitat FROM referentiel_habitat) THEN EXIT;
END IF;
EXECUTE
$req$
INSERT INTO point_habitat_presente_habitat (id_entite, code_habitat, ordre) VALUES ($req$||var_id_entite||$req$, split_part('$req$||var_complexe_habitat||$req$','&','$req$||var_compteur||$req$'), $req$||var_compteur||$req$)
$req$;
RAISE NOTICE ' ESE numéro %', var_id_entite;
RAISE NOTICE ' Habitat numéro %', var_compteur;
RAISE NOTICE ' Nouvel habitat simple %', var_habitat_simple;
var_compteur:=var_compteur+1;
var_habitat_simple:=NULL;
RAISE NOTICE 'compteur vaut maintenant : %', var_compteur;
END LOOP;
END LOOP;
RETURN 1;
END;
$_$
LANGUAGE plpgsql;