Connaitre tous les taxons situés sous un nœud de l'arbre taxonomique

CREATE OR REPLACE FUNCTION inpn.taxons_fils(character varying)
  RETURNS SETOF character varying AS
$BODY$
DECLARE
	var_cd_nom alias FOR $1;
BEGIN
          RETURN QUERY
		WITH RECURSIVE genealogie AS(
		SELECT cd_nom, cd_taxsup, lb_nom FROM inpn.taxref WHERE cd_nom=lower(var_cd_nom)
		UNION
		SELECT inpn.taxref.cd_nom, inpn.taxref.cd_taxsup, inpn.taxref.lb_nom FROM inpn.taxref JOIN genealogie ON inpn.taxref.cd_taxsup = genealogie.cd_nom
		)
		SELECT cd_nom FROM genealogie;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE SECURITY DEFINER
  COST 100;
ALTER FUNCTION inpn.taxons_fils(character varying) OWNER TO dba;

Exemple : lister tous les odonates

SELECT inpn.taxons_fils('185356');
creation_bdd/fonctions/taxon_fils.txt · Dernière modification: 2011/08/08 09:10 par admin_wiki_sicen
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