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;
creation_bdd/fonctions/fonctioncenattributionhabitatpointhabitat.txt · Dernière modification: 2010/02/06 13:21 (modification externe)
www.chimeric.de Creative Commons License Valid CSS Propulsé par DokuWiki Get firefox!! Changements récents - flux RSS Valid XHTML 1.0 Hébergé par Alwaysdata