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

3 modi per elencare tutte le stored procedure in un database PostgreSQL

Ecco tre opzioni per elencare tutte le stored procedure in un database Postgres.

Il information_schema.routines Visualizza

Questa vista contiene tutte le funzioni e le procedure nel database corrente a cui l'utente corrente ha accesso (in quanto proprietario o in possesso di qualche privilegio).

Ecco un esempio di restituzione di un elenco di stored procedure:

SELECT
    routine_schema,
    routine_name
FROM 
    information_schema.routines
WHERE 
    routine_type = 'PROCEDURE';

Sentiti libero di includere più colonne se necessario. Puoi ottenere la definizione della procedura con la routine_definition colonna.

Il pg_proc Catalogo

Il pg_catalog.pg_proc il catalogo memorizza informazioni su funzioni, procedure, funzioni aggregate e funzioni della finestra.

Possiamo unirci a questo con il pg_catalog.pg_namespace catalog per filtrare i risultati alle sole procedure con il public spazio dei nomi:

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';

Abbiamo filtrato su un prokind di p per limitare i risultati alle stored procedure.

I possibili valori sono f per una normale funzione, p per una procedura, a per una funzione aggregata, o w per una funzione finestra.

Puoi aggiungere il p.prosrc colonna per ottenere la definizione della procedura. Oppure potresti passare il p.oid nella colonna pg_get_functiondef() funzione. Questa funzione produrrà una CREATE OR REPLACE PROCEDURE istruzione per la procedura memorizzata.

Il \df Comando

Quando usiamo psql, possiamo usare il \df comando:

\df

Per impostazione predefinita, restituisce solo oggetti creati dall'utente. In alternativa puoi fornire un pattern o la S modificatore per includere oggetti di sistema.

Ecco un esempio di fornitura di un modello:

\df *album*

Quell'esempio restringe i risultati solo a quelle funzioni/procedure con il testo album a loro nome.

Nota che questo comando restituisce anche funzioni. Il tipo di routine (ad es. func , proc ) è elencato in un type colonna nell'output.