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

#1 30/11/2012 17:35:39

d_light
Membre

Récupération du code source d'une fonction/procédure

Bonjour,

   Je n'arrive pas à récupérer le code complet pour la création de fonctions/procédures:

J'utilise:

SELECT prosrc FROM pg_proc WHERE proname='******';

Mais cela donne une source inutilisable pour recréer cette même fonction en récupérant cette source dans un script.

\df+ nom_fonction

Même chose, c'est inutilisable

La fonction get_functiondef(oid) ne fonctionne pas chez moi je suis en postgre 8.2.

   Avez vous d'autres idées ?; Normalement le code que je suis censé récupérer devrait ressembler a CREATE FUNCTION .... etc .... ici ce n'est pas le cas.

Merci d'avance.

Hors ligne

#2 30/11/2012 23:53:23

rjuju
Administrateur

Re : Récupération du code source d'une fonction/procédure

Bonjour,

avec une version aussi ancienne, il faut générer la partie CREATE FUNCTION... à l'aide des informations dans la table pg_proc, notamment pour les arguments. Certains programmes le font, comme pg_dump ou pgAdmin.

Hors ligne

#3 04/12/2012 15:13:46

d_light
Membre

Re : Récupération du code source d'une fonction/procédure

Merci rjuju,

   PG_Dump le fait avec quelles options ? ;  je genere simplement les ddl du schéma il me sort bien les ordres de créations des triggers pour lesquelles des fonctions sont liés mais pas l'ordre de création des fonctions elles mêmes !!

   Si je rajoute CREATE FUNCTION au prosrc que je récupére, il me manque les arguments passés a ses fonctions comment puis je les récupérer ?

Merci.

Hors ligne

#4 04/12/2012 15:55:06

gleu
Administrateur

Re : Récupération du code source d'une fonction/procédure

Essayez pg_get_functiondef...


Guillaume.

Hors ligne

#5 04/12/2012 16:04:13

d_light
Membre

Re : Récupération du code source d'une fonction/procédure

ça ne fonctionne pas Gleu merci quand même, je l'ai dit dans le texte initial du sujet. Je suis en 8.2 ceci explique sans doute cela, inutilie de me demander de migrer ^^

Hors ligne

#6 04/12/2012 17:31:07

rjuju
Administrateur

Re : Récupération du code source d'une fonction/procédure

pg_dump -s devrait donner tout le DDL de la base, fonctions y compris. Vérifiez bien que vous ne restreigniez pas votre dump sur un schéma spécifique.

Hors ligne

#7 04/12/2012 18:46:47

gleu
Administrateur

Re : Récupération du code source d'une fonction/procédure

Oups, oui, désolé. Je n'avais pas relu le début.


Guillaume.

Hors ligne

#8 05/12/2012 12:53:57

d_light
Membre

Re : Récupération du code source d'une fonction/procédure

Bon je m'en suis sorti, merci a vous 2. L'occasion pour moi de me rendre compte que sous postgres un user n'est pas égal a un schéma comme sous Oracle ^^.

Hors ligne

#9 05/12/2012 13:54:42

rjuju
Administrateur

Re : Récupération du code source d'une fonction/procédure

Effectivement, cependant le search_path par défaut ("$user",public) donne quand même une priorité au schéma utilisateur s'il est présent.

Hors ligne

Pied de page des forums