Voici trois options pour répertorier toutes les procédures stockées dans une base de données Postgres.
Les information_schema.routines
Afficher
Cette vue contient toutes les fonctions et procédures de la base de données actuelle auxquelles l'utilisateur actuel a accès (en étant le propriétaire ou en ayant certains privilèges).
Voici un exemple de renvoi d'une liste de procédures stockées :
SELECT
routine_schema,
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'PROCEDURE';
N'hésitez pas à inclure plus de colonnes si nécessaire. Vous pouvez obtenir la définition de la procédure avec le routine_definition
colonne.
Le pg_proc
Catalogue
Le pg_catalog.pg_proc
catalogue stocke des informations sur les fonctions, les procédures, les fonctions d'agrégation et les fonctions de fenêtre.
Nous pouvons joindre cela avec le pg_catalog.pg_namespace
catalogue pour filtrer les résultats aux seules procédures avec le public
espace de noms :
SELECT
n.nspname,
p.proname
FROM
pg_catalog.pg_namespace n
JOIN
pg_catalog.pg_proc p ON
p.pronamespace = n.oid
WHERE
p.prokind = 'p'
AND
n.nspname = 'public';
Nous avons filtré sur un prokind
de p
pour limiter les résultats aux procédures stockées.
Les valeurs possibles sont f
pour une fonction normale, p
pour une procédure, a
pour une fonction d'agrégation, ou w
pour une fonction de fenêtre.
Vous pouvez ajouter le p.prosrc
pour obtenir la définition de la procédure. Ou vous pouvez passer le p.oid
colonne à pg_get_functiondef()
une fonction. Cette fonction produira une CREATE OR REPLACE PROCEDURE
instruction pour la procédure stockée.
Le \df
Commande
Lors de l'utilisation de psql, nous pouvons utiliser le \df
commande :
\df
Par défaut, cela renvoie uniquement les objets créés par l'utilisateur. Vous pouvez alternativement fournir un motif ou le S
modificateur pour inclure les objets système.
Voici un exemple de fourniture d'un modèle :
\df *album*
Cet exemple limite les résultats aux seules fonctions/procédures avec le texte album
en leur nom.
Notez que cette commande renvoie également des fonctions. Le type de routine (par exemple func
, proc
) est listé dans un type
colonne dans la sortie.