Comment puis-je obtenir une liste de toutes les fonctions stockées dans la base de données d'un schéma dans PostgreSQL?
Je veux être en mesure de se connecter à une base de données PostgreSQL et de trouver toutes les fonctions pour un schéma.
Je pensais que je pouvais faire quelques requêtes à pg_catalog ou information_schema et d'obtenir une liste de toutes les fonctions, mais je ne peut pas trouver les noms et les paramètres sont stockés. Je suis à la recherche pour une requête qui va me donner le nom de la fonction et les types de paramètres qu'il faut (et de quel ordre il les prend dans).
Est-il un moyen de faire cela?
Vous devez vous connecter pour publier un commentaire.
dans
psql
donne les informations nécessaires.De voir la requête qui est utilisé en interne se connecter à une base de données avec
psql
et offre un supplément de "-E
" (ou "--echo-hidden
"), puis exécutez la commande ci-dessus.Après quelques recherches, j'ai été capable de trouver la
information_schema.routines
table et leinformation_schema.parameters
tables. À l'aide de ces, on peut construire une requête à cet effet. JOINTURE GAUCHE, au lieu de REJOINDRE, est nécessaire pour récupérer les fonctions sans paramètres.oidvectortypes
vraiment utile. Voir nouvelles de réponse: stackoverflow.com/a/24034604/398670Si quelqu'un est intéresse ici, c'est ce que la requête est exécutée par
psql
sur postgres 9.1:Vous pouvez obtenir ce
psql
pistes pour une barre oblique inverse de commande en exécutantpsql
avec le-E
drapeau.Il y a une fonction très pratique,
oidvectortypes
, qui rend ce beaucoup plus facile.De crédit à Leo Hsu et Regina Obe à Postgres en Ligne pour souligner
oidvectortypes
. J'ai écrit des fonctions similaires avant, mais utilisé complexe expressions imbriquées que cette fonction se débarrasser de la nécessité pour.Voir la réponse.
(édition en 2016)
En résumant les options de rapport:
AVIS: utilisation
p.proname||'_'||p.oid AS specific_name
pour obtenir les noms uniques, ou à vous JOINDRE àinformation_schema
tables — voirroutines
etparameters
à @RuddZwolinski de réponse.De la fonction OID (voir
pg_catalog.pg_proc
) et de la fonction specific_name (voirinformation_schema.routines
) sont les principales options de référence à des fonctions. Ci-dessous, quelques fonctions utiles dans les rapports et d'autres contextes.proname
est le nom, mais comment obtenir les OID pour, par exemple. utilisation danspg_catalog.pg_get_function_result(oid))
?oid
colonne depg_proc
. C'est une colonne masquée.Fonctionnent en dessous de requête SQL pour créer une vue qui va montrer toutes les fonctions:
Est une bonne idée nommé les fonctions commun alias sur les premiers mots de filtre sur le nom
LIKE
Exemple avec le schéma public dans Postgresql 9.4, assurez-vous de remplacer son régime
Exemple:
psql
Postgres interface client. Cela ne fonctionnera que danspsql
et n'est pas techniquement une requête SQL.Cette fonction retourne tous les routines de la base de données actuelle.
Obtenir la Liste des function_schema et function_name...