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;