Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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.
Julien.
https://rjuju.github.io/
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.
Julien.
https://rjuju.github.io/
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.
Julien.
https://rjuju.github.io/
Hors ligne