PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

3 Möglichkeiten zum Auflisten aller gespeicherten Prozeduren in einer PostgreSQL-Datenbank

Hier sind drei Optionen zum Auflisten aller gespeicherten Prozeduren in einer Postgres-Datenbank.

Die information_schema.routines Anzeigen

Diese Ansicht enthält alle Funktionen und Prozeduren in der aktuellen Datenbank, auf die der aktuelle Benutzer Zugriff hat (indem er der Eigentümer ist oder einige Privilegien hat).

Hier ist ein Beispiel für die Rückgabe einer Liste gespeicherter Prozeduren:

SELECT
    routine_schema,
    routine_name
FROM 
    information_schema.routines
WHERE 
    routine_type = 'PROCEDURE';

Bei Bedarf können Sie gerne weitere Spalten hinzufügen. Sie können die Definition der Prozedur mit routine_definition abrufen Spalte.

Der pg_proc Katalog

Der pg_catalog.pg_proc Katalog speichert Informationen über Funktionen, Prozeduren, Aggregatfunktionen und Fensterfunktionen.

Wir können dies mit dem pg_catalog.pg_namespace verbinden catalog, um die Ergebnisse nur nach Prozeduren mit dem public zu filtern Namensraum:

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';

Wir haben nach prokind gefiltert von p um die Ergebnisse auf gespeicherte Prozeduren zu beschränken.

Die möglichen Werte sind f für eine normale Funktion p für eine Prozedur a für eine Aggregatfunktion oder w für eine Fensterfunktion.

Sie können p.prosrc hinzufügen Spalte, um die Definition der Prozedur abzurufen. Oder Sie könnten die p.oid übergeben Spalte zu pg_get_functiondef() Funktion. Diese Funktion erzeugt ein CREATE OR REPLACE PROCEDURE -Anweisung für die gespeicherte Prozedur.

Der \df Befehl

Bei der Verwendung von psql können wir den \df verwenden Befehl:

\df

Standardmäßig gibt dies nur vom Benutzer erstellte Objekte zurück. Sie können alternativ ein Muster oder den S angeben Modifikator zum Einschließen von Systemobjekten.

Hier ist ein Beispiel für die Bereitstellung eines Musters:

\df *album*

Dieses Beispiel schränkt die Ergebnisse auf nur die Funktionen/Prozeduren mit dem Text album ein in ihrem Namen.

Beachten Sie, dass dieser Befehl auch Funktionen zurückgibt. Der Routinentyp (z. B. func , proc ) ist in einem type aufgelistet Spalte in der Ausgabe.