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.