Ich möchte in der Lage sein, eine Verbindung zu einer PostgreSQL-Datenbank herzustellen und alle Funktionen für ein bestimmtes Schema zu finden.
Mein Gedanke war, dass ich eine Abfrage an pg_catalog oder information_schema machen und eine Liste aller Funktionen erhalten könnte, aber ich kann nicht herausfinden, wo die Namen und Parameter gespeichert sind. Ich suche nach einer Abfrage, die mir den Funktionsnamen und die verwendeten Parametertypen gibt (und in welcher Reihenfolge sie verwendet werden).
Gibt es eine Möglichkeit, dies zu tun?
quelle
Nach einigem Suchen konnte ich den
information_schema.routines
Tisch und dieinformation_schema.parameters
Tische finden. Mit diesen kann man zu diesem Zweck eine Abfrage erstellen. LEFT JOIN anstelle von JOIN ist erforderlich, um Funktionen ohne Parameter abzurufen.quelle
oidvectortypes
sehr nützlich finden . Siehe neue Antwort: stackoverflow.com/a/24034604/398670Wenn jemand interessiert ist, ist hier, welche Abfrage
psql
auf postgres 9.1 ausgeführt wird :Sie können ermitteln, was
psql
für einen Backslash-Befehl ausgeführt wird, indem Siepsql
mit dem-E
Flag ausgeführt werden.quelle
ERROR: column p.proisagg does not exist
Es gibt eine praktische Funktion,
oidvectortypes
die dies viel einfacher macht.Dank an Leo Hsu und Regina Obe von Postgres Online für den Hinweis
oidvectortypes
. Ich habe bereits ähnliche Funktionen geschrieben, aber komplexe verschachtelte Ausdrücke verwendet, für die diese Funktion nicht mehr erforderlich ist.Siehe verwandte Antwort .
(bearbeiten im Jahr 2016)
Zusammenfassen typischer Berichtsoptionen:
HINWEIS : Verwenden Sie
p.proname||'_'||p.oid AS specific_name
diese Option , um eindeutige Namen zu erhalten oder sichinformation_schema
Tabellen anzuschließen - sieheroutines
undparameters
unter @ RuddZwolinskis Antwort.Die OID
pg_catalog.pg_proc
der Funktion (siehe ) und der spezifische Name der Funktion (sieheinformation_schema.routines
) sind die Hauptreferenzoptionen für Funktionen. Im Folgenden einige nützliche Funktionen für die Berichterstellung und andere Kontexte.quelle
proname
ist der Name, aber wie bekommt man die OID für z. verwenden inpg_catalog.pg_get_function_result(oid))
?oid
Spalte vonpg_proc
. Es ist eine versteckte Spalte.Führen Sie die folgende SQL-Abfrage aus, um eine Ansicht zu erstellen, in der alle Funktionen angezeigt werden:
quelle
Ist eine gute Idee, die Funktionen mit kommunalem Alias auf den ersten Wörtern für filtre den Namen mit
LIKE
Beispiel mit öffentlichem Schema in Postgresql 9.4 zu benennen , stellen Sie sicher, durch sein Schema zu ersetzenquelle
Beispiel:
quelle
psql
Postgres-Client-Schnittstelle. Dies funktioniert nur inpsql
und ist technisch gesehen keine SQL-Abfrage.Liste der Funktionsschemata und Funktionsnamen abrufen ...
quelle
Diese Funktion gibt alle benutzerdefinierten Routinen in der aktuellen Datenbank zurück.
quelle