sql >> Database >  >> RDS >> PostgreSQL

3 manieren om alle functies in PostgreSQL op te sommen

Hier zijn drie opties om alle functies in een PostgreSQL-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 functies:

SELECT
    routine_name
FROM 
    information_schema.routines
WHERE 
    routine_type = 'FUNCTION'
AND
    routine_schema = 'public';

In dit voorbeeld werkt alleen met de public schema worden geretourneerd. Voel je vrij om meer kolommen op te nemen indien nodig.

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 = 'f'
AND
    n.nspname = 'public';

We hebben gefilterd op een prokind van f om de resultaten te beperken tot alleen normale functies.

De mogelijke waarden zijn f voor een normale functie, p voor een procedure, a voor een aggregatiefunctie, of w voor een vensterfunctie.

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 *key*

Dat voorbeeld beperkt de resultaten tot alleen die functies/procedures met de tekst key op hun naam.

Merk op dat deze opdracht ook opgeslagen procedures retourneert. Het routinetype (bijv. func , proc ) wordt vermeld in een type kolom in de uitvoer.


  1. Doe while-lus in SQL Server 2008

  2. POWER() Functie in Oracle

  3. SQL-filtercriteria in join-criteria of waar-clausule die efficiënter is

  4. Vensterfuncties en meer lokale aggregatie