Chcę mieć możliwość połączenia się z bazą danych PostgreSQL i znalezienia wszystkich funkcji dla określonego schematu.
Pomyślałem, że mógłbym wykonać zapytanie do pg_catalog lub information_schema i uzyskać listę wszystkich funkcji, ale nie mogę dowiedzieć się, gdzie są przechowywane nazwy i parametry. Szukam zapytania, które poda nazwę funkcji i typy parametrów, które przyjmuje (i kolejność, w jakiej je przyjmuje).
Czy jest na to sposób?
postgresql
function
Rudd Zwolinski
źródło
źródło
Po kilku poszukiwaniach udało mi się znaleźć
information_schema.routines
stół iinformation_schema.parameters
stoły. Korzystając z nich, można w tym celu skonstruować zapytanie. LEFT JOIN, zamiast JOIN, jest konieczne do pobierania funkcji bez parametrów.źródło
oidvectortypes
naprawdę przydatne. Zobacz nową odpowiedź: stackoverflow.com/a/24034604/398670Jeśli ktoś jest zainteresowany, oto jakie zapytanie jest wykonywane
psql
na postgres 9.1:Możesz uzyskać to, co
psql
działa dla polecenia z ukośnikiem odwrotnym, uruchamiającpsql
z-E
flagą.źródło
ERROR: column p.proisagg does not exist
Jest przydatna funkcja
oidvectortypes
, która znacznie to ułatwia.Podziękowania dla Leo Hsu i Reginy Obe z Postgres Online za wskazanie
oidvectortypes
. Pisałem wcześniej podobne funkcje, ale używałem złożonych wyrażeń zagnieżdżonych, których ta funkcja eliminuje potrzebę.Zobacz powiązaną odpowiedź .
(edytuj w 2016)
Podsumowując typowe opcje raportu:
UWAGA : użyj,
p.proname||'_'||p.oid AS specific_name
aby uzyskać unikalne nazwy, lub DOŁĄCZ doinformation_schema
tabel - patrzroutines
iparameters
przy odpowiedzi @ RuddZwolinski.Z funkcji OID (patrz
pg_catalog.pg_proc
), a funkcja jest specific_name (zobaczinformation_schema.routines
) to główne opcje odniesienie do funkcji. Poniżej kilka przydatnych funkcji w raportowaniu i innych kontekstach.źródło
proname
jest nazwa, ale jak zdobyć OID np. używać wpg_catalog.pg_get_function_result(oid))
?oid
Kolumnapg_proc
. To ukryta kolumna.Uruchom poniżej zapytanie SQL, aby utworzyć widok, który pokaże wszystkie funkcje:
źródło
Czy dobrym pomysłem jest nazwanie funkcji z aliasami komunikacyjnymi na pierwszych słowach, aby odfiltrować nazwę z
LIKE
Przykładem ze schematem publicznym w Postgresql 9.4, należy zamienić na jego schematźródło
Przykład:
źródło
psql
interfejsu klienta Postgres. Działa to tylko w programiepsql
i nie jest technicznie zapytaniem SQL.Pobierz listę schematu_funkcji i nazwa_funkcji ...
źródło
Ta funkcja zwraca wszystkie procedury zdefiniowane przez użytkownika w bieżącej bazie danych.
źródło