Hier zijn drie opties om alle functies in een PostgreSQL-database op te sommen.
De information_schema.routines
Bekijk
Deze weergave bevat alle functies en procedures in de huidige database waartoe de huidige gebruiker toegang heeft (door de eigenaar te zijn of een bepaald privilege te hebben).
Hier is een voorbeeld van het retourneren van een lijst met functies:
SELECT
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'FUNCTION'
AND
routine_schema = 'public';
In dit voorbeeld werkt alleen met de public
schema worden geretourneerd. Voel je vrij om meer kolommen op te nemen indien nodig.
De pg_proc
Catalogus
De pg_catalog.pg_proc
catalogus slaat informatie op over functies, procedures, aggregatiefuncties en vensterfuncties.
We kunnen hieraan deelnemen met de pg_catalog.pg_namespace
catalogus om de resultaten te filteren naar alleen procedures met de public
naamruimte:
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 = 'f'
AND
n.nspname = 'public';
We hebben gefilterd op een prokind
van f
om de resultaten te beperken tot alleen normale functies.
De mogelijke waarden zijn f
voor een normale functie, p
voor een procedure, a
voor een aggregatiefunctie, of w
voor een vensterfunctie.
De \df
Commando
Als we psql gebruiken, kunnen we de \df
commando:
\df
Standaard retourneert dit alleen door de gebruiker gemaakte objecten. U kunt ook een patroon of de S
. aanleveren modifier om systeemobjecten op te nemen.
Hier is een voorbeeld van het verstrekken van een patroon:
\df *key*
Dat voorbeeld beperkt de resultaten tot alleen die functies/procedures met de tekst key
op hun naam.
Merk op dat deze opdracht ook opgeslagen procedures retourneert. Het routinetype (bijv. func
, proc
) wordt vermeld in een type
kolom in de uitvoer.