PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 27/01/2009 19:02:29

zied
Membre

Problème avec fonction connectby

J'ai une vue dont le script de création est le suivant

CREATE OR REPLACE VIEW vparent_child AS 
 SELECT par.prod_id AS par_id, par.prod_version AS par_ver, par.prod_ref AS par_ref, par.prod_indice_rev AS par_ind, par.statut AS par_statut, par.date_heure AS par_date_heure, chi.prod_id AS chi_id, chi.prod_version AS chi_ver, chi.prod_ref AS chi_ref, chi.prod_indice_rev AS chi_ind, chi.statut AS chi_statut, chi.date_heure AS chi_date_heure
   FROM prod_evolution par, prod_evolution chi, nomenclature nom
  WHERE chi.prod_version = nom.prod_ver AND par.prod_version = nom.parent_prod_ver;

ALTER TABLE vparent_child OWNER TO postgres;

J'ai effectué la requête suivante avec la fonction récursive connectby :

SELECT * FROM connectby('vparent_child', 'chi_ver', 'par_ver', 3, 0, '~')
 AS t(chi_ver bigint, par_ver bigint, level int, branch text);

J'ai eu le message d'erreur suivant :

ERREUR:  la fonction connectby(unknown, unknown, unknown, integer, integer, unknown) n'existe pas
LIGNE 1 : SELECT * FROM connectby('vparent_child', 'chi_ver', 'par_ver...
                        ^
ASTUCE : Aucune fonction ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.

What's happening?

Hors ligne

#2 28/01/2009 00:20:27

gleu
Administrateur

Re : Problème avec fonction connectby

La fonction connectby est disponible dans le module contrib tablefunc. Il faut donc avoir installer ce module avant de pouvoir utiliser la fonction. Voir http://docs.postgresqlfr.org/8.3/tablefunc.html pour les détails.


Guillaume.

Hors ligne

#3 28/01/2009 19:20:06

zied
Membre

Re : Problème avec fonction connectby

Le problème se trouve plutôt du côté du 4ème paramètre qui doit être fournit en tant que texte quelle que soit son type c-a-d il faut mettre '3' au lieu de 3.

SELECT * FROM connectby('vparent_child', 'chi_ver', 'par_ver', '3', 0, '~')
 AS t(chi_ver bigint, par_ver bigint, level int, branch text);

Hors ligne

Pied de page des forums