Hier zijn drie opties om alle opgeslagen procedures in een Postgres-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 opgeslagen procedures:
SELECT
routine_schema,
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'PROCEDURE';
Voel je vrij om meer kolommen op te nemen indien nodig. U kunt de definitie van de procedure krijgen met de routine_definition
kolom.
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 = 'p'
AND
n.nspname = 'public';
We hebben gefilterd op een prokind
van p
om de resultaten te beperken tot opgeslagen procedures.
De mogelijke waarden zijn f
voor een normale functie, p
voor een procedure, a
voor een aggregatiefunctie, of w
voor een vensterfunctie.
U kunt de p.prosrc
. toevoegen kolom om de definitie van de procedure te krijgen. Of u kunt de p.oid
. doorgeven kolom naar de pg_get_functiondef()
functie. Deze functie zal een CREATE OR REPLACE PROCEDURE
produceren verklaring voor de opgeslagen procedure.
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 *album*
Dat voorbeeld beperkt de resultaten tot alleen die functies/procedures met de tekst album
op hun naam.
Merk op dat deze opdracht ook functies retourneert. Het routinetype (bijv. func
, proc
) wordt vermeld in een type
kolom in de uitvoer.