Her er tre muligheder for at vise alle de lagrede procedurer i en Postgres-database.
information_schema.routines Vis
Denne visning indeholder alle funktioner og procedurer i den aktuelle database, som den aktuelle bruger har adgang til (ved at være ejer eller have et privilegium).
Her er et eksempel på returnering af en liste over lagrede procedurer:
SELECT
routine_schema,
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'PROCEDURE';
Du er velkommen til at inkludere flere kolonner, hvis det er nødvendigt. Du kan få procedurens definition med routine_definition kolonne.
pg_proc Katalog
pg_catalog.pg_proc kataloget gemmer information om funktioner, procedurer, aggregerede funktioner og vinduesfunktioner.
Vi kan tilslutte dette med pg_catalog.pg_namespace katalog for at filtrere resultaterne til kun procedurer med public navneområde:
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 filtrerede til en prokind af p for at begrænse resultaterne til lagrede procedurer.
De mulige værdier er f for en normal funktion, p for en procedure, a for en samlet funktion eller w for en vinduesfunktion.
Du kan tilføje p.prosrc kolonne for at få procedurens definition. Eller du kan videregive p.oid kolonnen til pg_get_functiondef() fungere. Denne funktion vil producere en CREATE OR REPLACE PROCEDURE erklæring for den lagrede procedure.
\df Kommando
Når vi bruger psql, kan vi bruge \df kommando:
\df
Som standard returnerer dette kun brugeroprettede objekter. Du kan alternativt levere et mønster eller S modifikator til at inkludere systemobjekter.
Her er et eksempel på at give et mønster:
\df *album*
Dette eksempel indsnævrer resultaterne til kun de funktioner/procedurer med teksten album i deres navn.
Bemærk, at denne kommando også returnerer funktioner. Rutintypen (f.eks. func , proc ) er angivet i en type kolonne i outputtet.