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.