Här är tre alternativ för att lista ut alla lagrade procedurer i en Postgres-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å hur du returnerar en lista över lagrade procedurer:
SELECT
routine_schema,
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'PROCEDURE';
Ta gärna med fler kolumner om det behövs. Du kan få procedurens definition med routine_definition
kolumn.
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 = 'p'
AND
n.nspname = 'public';
Vi filtrerade till en prokind
av p
för att begränsa resultaten till lagrade procedurer.
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.
Du kan lägga till p.prosrc
kolumn för att få procedurens definition. Eller så kan du skicka p.oid
kolumnen till pg_get_functiondef()
fungera. Denna funktion skapar en CREATE OR REPLACE PROCEDURE
uttalande för den lagrade proceduren.
\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 *album*
Det exemplet begränsar resultaten till bara de funktionerna/procedurerna med texten album
i deras namn.
Observera att detta kommando också returnerar funktioner. Rutintypen (t.ex. func
, proc
) listas i en type
kolumn i utgången.