sql >> Database teknologi >  >> RDS >> PostgreSQL

3 måder at liste alle lagrede procedurer i en PostgreSQL-database

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.


  1. 2 måder at liste tabellerne i en SQLite-database

  2. Er det muligt at henvise til kolonnenavne via bindevariabler i Oracle?

  3. Indsætte hele DataTable i databasen på én gang i stedet for række for række?

  4. Hvad er det maksimale antal tilladte parametre pr. databaseudbydertype?