Här är tre alternativ för att lista ut alla funktioner i en PostgreSQL-databas.
information_schema.routines
Visa
Denna vy innehåller alla funktioner och procedurer i den aktuella databasen som den aktuella användaren har tillgång till (genom att vara ägare eller ha någon behörighet).
Här är ett exempel på att returnera en lista med funktioner:
SELECT
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'FUNCTION'
AND
routine_schema = 'public';
I det här exemplet fungerar endast med public
schemat returneras. Inkludera gärna fler kolumner om det behövs.
pg_proc
Katalog
pg_catalog.pg_proc
katalogen lagrar information om funktioner, procedurer, aggregerade funktioner och fönsterfunktioner.
Vi kan ansluta till detta med pg_catalog.pg_namespace
katalog för att filtrera resultaten till endast procedurer med public
namnutrymme:
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';
Vi filtrerade till en prokind
av f
för att begränsa resultaten till bara normala funktioner.
De möjliga värdena är f
för en normal funktion, p
för en procedur, a
för en aggregerad funktion, eller w
för en fönsterfunktion.
\df
Kommando
När vi använder psql kan vi använda \df
kommando:
\df
Som standard returnerar detta endast användarskapade objekt. Du kan alternativt tillhandahålla ett mönster eller S
modifierare för att inkludera systemobjekt.
Här är ett exempel på att tillhandahålla ett mönster:
\df *key*
Det exemplet begränsar resultaten till bara de funktionerna/procedurerna med texten key
i deras namn.
Observera att detta kommando också returnerar lagrade procedurer. Rutintypen (t.ex. func
, proc
) listas i en type
kolumn i utgången.