it-swarm.com.de

Liste der gespeicherten Funktionen, die auf eine Tabelle in PostgreSQL verweisen

Nur eine kurze und einfache Frage: Wie listet man in PostgreSQL die Namen aller gespeicherten Funktionen/gespeicherten Prozeduren mit einer Tabelle auf, die nur eine SELECT-Anweisung verwendet, wenn möglich? Wenn ein einfaches SELECT nicht ausreicht, kann ich mit einer gespeicherten Funktion auskommen.

Ich denke, meine Frage ähnelt dieser anderen Frage etwas, aber diese andere Frage betrifft SQL Server 2005:
Liste der gespeicherten Prozeduren aus der Tabelle

(optional) Wie listen Sie auch die Trigger und Einschränkungen auf, die dieselbe Tabelle verwenden, und zwar auf dieselbe Weise?

67
Paolo B.
SELECT  p.proname
FROM    pg_catalog.pg_namespace n
JOIN    pg_catalog.pg_proc p
ON      p.pronamespace = n.oid
WHERE   n.nspname = 'public';
92
Quassnoi
SELECT  proname, prosrc
FROM    pg_catalog.pg_namespace n
JOIN    pg_catalog.pg_proc p
ON      pronamespace = n.oid
WHERE   nspname = 'public';
16
davidwhthomas

Wenn Sie psql verwenden, versuchen Sie \df

Aus der Manpage:

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.

Wenn Sie \set ECHO_HIDDEN ausführen, erfahren Sie, was \df hinter den Kulissen läuft.

13
dayer4b

Gleich wie @quassnoi und @davidwhthomas, außer dass ich die Argumentnamen hinzugefügt habe:

SELECT  proname, proargnames, prosrc 
FROM    pg_catalog.pg_namespace n
JOIN    pg_catalog.pg_proc p
ON      pronamespace = n.oid
WHERE   nspname = 'public';

Wenn der Zweck der Auflistung der Funktionen darin besteht, sie zu bereinigen oder eine neue Funktion mit einer sich ändernden Parameterliste zu durchlaufen, müssen Sie häufig Funktionen löschen:

DROP FUNCTION <name>(<args>);

Durch das Hinzufügen von proargnames kann ich den entsprechenden Funktionsnamen für den Drop erstellen.

Außerdem ist es schön, bei der Bewertung der Funktionen ein vollständigeres Bild zu sehen.

9
Matt Dressel

Sie können das Standardschema information_schema verwenden, um Metadaten zu Ihrer Datenbank abzurufen (sie ist im SQL-Standard und sollte daher in verschiedenen Datenbanksystemen gleich funktionieren. In diesem Fall möchten Sie information_schema.routines .

5

Schauen Sie sich mein Rezept an. Es liest Funktionen und löst aus. Es basiert auf Informationen aus: Extrahieren von META-Informationen aus PostgreSQL (INFORMATION_SCHEMA)

4
Michał Niklas

Das Systemmaterial ausschließen:

select proname from pg_proc where proowner <> 1;
4
windyjonas

Zum Abrufen der -Argumentypen der Funktionen, die erforderlich sind, wenn auf die Funktion in ALTER verwiesen wird - mit oldevectortypes hat es gut funktioniert. 

Siehe Wie bekomme ich eine Liste aller Funktionen, die in der Datenbank eines bestimmten Schemas in PostgreSQL gespeichert sind?

0
storm_m2138