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?
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';
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.
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.
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
.
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)
Das Systemmaterial ausschließen:
select proname from pg_proc where proowner <> 1;
Zum Abrufen der -Argumentypen der Funktionen, die erforderlich sind, wenn auf die Funktion in ALTER verwiesen wird - mit oldevectortypes hat es gut funktioniert.