sql >> Database >  >> RDS >> PostgreSQL

3 manieren om alle opgeslagen procedures in een PostgreSQL-database op te sommen

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.


  1. Waarom is het het beste om een ​​telefoonnummer op te slaan als een string versus een geheel getal?

  2. Toegang tot klassenmodule en wrapperklassen

  3. Log querytijd in SQLite op Android

  4. Pictogrammen voor SQL-ontwikkelaars