Juste une question simple et rapide: dans PostgreSQL, comment lister les noms de toutes les fonctions/procédures stockées en utilisant une table en utilisant uniquement une instruction SELECT, si possible? Si un simple SELECT est insuffisant, je peux me débrouiller avec une fonction enregistrée.
Je pense que ma question est un peu similaire à cette autre question, mais cette autre question concerne SQL Server 2005:
Liste des procédures mémorisées du tableau
(facultatif) Comment listez-vous également les déclencheurs et les contraintes qui utilisent la même table de la même manière?
SELECT p.proname
FROM pg_catalog.pg_namespace n
JOIN pg_catalog.pg_proc p
ON p.pronamespace = n.oid
WHERE n.nspname = 'public';
SELECT proname, prosrc
FROM pg_catalog.pg_namespace n
JOIN pg_catalog.pg_proc p
ON pronamespace = n.oid
WHERE nspname = 'public';
Si vous utilisez psql, essayez \df
De la page de manuel:
Tip
To look up functions taking arguments or returning values of a specific type, use your pager's search capability to scroll through the \df output.
Lancer \set ECHO_HIDDEN
révélera ce que \df
fonctionne en coulisse.
Identique à @quassnoi et @davidwhthomas, sauf que j'ai ajouté les noms d'arguments dans cet emplacement:
SELECT proname, proargnames, prosrc
FROM pg_catalog.pg_namespace n
JOIN pg_catalog.pg_proc p
ON pronamespace = n.oid
WHERE nspname = 'public';
Si le but de la liste des fonctions est de les nettoyer ou d’itérer une nouvelle fonction avec une liste de paramètres changeants, vous devrez souvent supprimer des fonctions:
DROP FUNCTION <name>(<args>);
En ajoutant des noms de domaine, je suis en mesure de construire le nom de fonction applicable à la chute.
De plus, il est agréable de voir une image plus complète lors de l’évaluation des fonctions.
Vous pouvez utiliser le schéma standard information_schema
pour obtenir des métadonnées sur votre base de données (elles sont au standard SQL, elles devraient donc fonctionner de la même manière dans différents systèmes de base de données). Dans ce cas, vous voulez information_schema.routines
.
Regardez ma recette . Il lit les fonctions et les déclencheurs. Il est basé sur des informations provenant de: Extraction d’informations META de PostgreSQL (INFORMATION_SCHEMA)
En excluant les éléments du système:
select proname from pg_proc where proowner <> 1;
Pour récupérer les types d'argument des fonctions, nécessaires pour référencer la fonction dans , MODIFIER - utiliser oldevectortypes a bien fonctionné pour moi.