PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

3 façons de lister toutes les procédures stockées dans une base de données PostgreSQL

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.