|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Bonjour
Je cherche à afficher le commentaire d'une séquence postgres, ainsi que le commentaire d'une fonction, et ce soit à l'aide de requêtes sql, soit à l'aide de psql sous linux… J'ai essayé directement sous la console ceci : \d nom_sequence mais ça me renvoie ceci et non le commentaire en question : Code :
Pour une table je fais comme ça et ça marche : Code :
Ginger |
||||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Avec psql, \ds+ devrait faire l'affaire pour une séquence ou \df+ pour une fonction.
En SQL, on peut aussi aller chercher dans pg_description comme pour une table, mais avec l'OID de la séquence. |
|
|
00
|
|
|
#3 | ||||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Merci pour la réponse
Ainsi que par ces 2 solutions de requête sql : Code :
J'ai essayé ces 3 solutions : Code :
|
||||
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Dans le cas d'une fonction l'OID doit être récupéré dans pg_catalog.pg_proc (plutôt que pg_class).
|
|
|
10
|
|
|
#5 | ||||||||||||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
J'ai essayé ça :
Code :
Je récupère la liste des fonctions comme ça : Code :
Code :
Si oui, est ce que chaque type (chaine, entier, decimal etc…) possède un numéro bien spécifique ? Parce que si j'affiche les résultats de cette requête, soit l'oid, le nom, les arguments et les types de la fonction : Code :
Code :
Est ce que c'est toujours pareil pour tout le monde ? Parce que si oui, comment écrire cette requête correctement ? : Code :
En attendant j'utilise ma solution (qui au final fait bien la différence entre les fonctions grâce aux types des parametres…) |
||||||||||||
|
|
00
|
|
|
#6 | |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Citation:
|
|
|
|
10
|
|
|
#7 | ||||||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Ah ok
J'ai ces deux requêtes : Code :
Code :
Suivons par exemple nom_fonction1 : Code :
|
||||||
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Sinon tu peux faire la même chose que psql c'est-à-dire utiliser la fonction pg_catalog.pg_get_function_arguments(). Elle prend l'oid de la fonction et elle renvoie la liste en texte des arguments de la fonction avec leurs types.
|
|
|
00
|
|
|
#9 | |||||||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Bonjour
J'essaie de faire la même chose que ce que j'avais fait, soit ceci : Citation:
Code :
Plus explicitement : 1043 20 1700 CORRESPOND A varchar bigint numeric (et donc pour l'instant j'arrive seulement à récupérer varchar…) En attendant j'essaie d'utiliser ta solution pg_catalog.pg_get_function_arguments() merci EDIT Si je fais ça : Code :
Code :
|
|||||||
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
C'est quelle version de postgresql?
|
|
|
00
|
|
|
#11 |
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Je suis sous pg_admin version 1.14 et pour postgres j'ai la 8.0.15
|
|
|
00
|
|
|
#12 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Non il faut faire pour avoir la version de postgresql
Les objets et fonctions de pg_catalog dépendent pas mal de la version de postgresql. |
|
|
00
|
|
|
#13 |
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Oui je viens de voir ça
|
|
|
00
|
|
|
#14 | ||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Ah je pense que j'ai trouvé une alternative :
Code :
|
||
|
|
00
|
|
|
#15 | ||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Bonjour
Le code que j'ai trouvé hier fonctionne bien, mais quand il y a une centaine de requêtes à faire ça met un temps fou (j'execute mes requêtes dans une boucle php, je sais ce n'est pas bien :s) : Code :
|
||
|
|
00
|
|
|
#16 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Si au final le but est similaire à la commande \df de psql (liste de toutes les fonctions avec leurs arguments) tu peux lancer psql avec l'option -E, faire \df et voir quelle requête il fait lui (c'est à ça que sert l'option -E).
|
|
|
00
|
|
|
#17 | ||||
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Merci c'est parfait
J'ai testé \df et \df+, voici ce la requête sql pour cette dernière commande : Code :
je ne comprend pas le ORDER BY 1, 2, 3, 4 par contre :s A quoi correspondent les 1 2 3 et 4 ? EDIT --> Ah j'ai compris, il s'agit de chaque colonne dans le select c'est bien ça ? Je vais essayer de la modifier pour que ça renvoie seulement les fonctions du schéma, et non les fonctions postgres du catalogue (pg_catalog). EDIT Voici la requête qui récupère toutes les fonctions et leurs commentaires : Code :
|
||||
|
|
00
|
|
|
#18 | |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Citation:
Ca évite de recopier toute l'expression dans le ORDER BY |
|
|
|
00
|
|
|
#19 |
|
Nouveau Membre du Club
![]() Inscription : mai 2009 Messages : 105 ![]() |
Ok ! C'est bien pratique pour ordonner.
Encore merci ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com