PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

3 maneiras de listar todos os procedimentos armazenados em um banco de dados PostgreSQL


Aqui estão três opções para listar todos os procedimentos armazenados em um banco de dados Postgres.

O information_schema.routines Visualizar


Esta visão contém todas as funções e procedimentos no banco de dados atual que o usuário atual tem acesso (por ser o proprietário ou ter algum privilégio).

Aqui está um exemplo de retorno de uma lista de procedimentos armazenados:
SELECT
    routine_schema,
    routine_name
FROM 
    information_schema.routines
WHERE 
    routine_type = 'PROCEDURE';

Sinta-se à vontade para incluir mais colunas, se necessário. Você pode obter a definição do procedimento com o routine_definition coluna.

O pg_proc Catálogo


O pg_catalog.pg_proc catalog armazena informações sobre funções, procedimentos, funções agregadas e funções de janela.

Podemos juntar isso com o pg_catalog.pg_namespace catalog para filtrar os resultados apenas para procedimentos com o public namespace:
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';

Filtramos para um prokind de p para limitar os resultados a procedimentos armazenados.

Os valores possíveis são f para uma função normal, p para um procedimento, a para uma função agregada, ou w para uma função de janela.

Você pode adicionar o p.prosrc coluna para obter a definição do procedimento. Ou você pode passar o p.oid coluna para o pg_get_functiondef() função. Esta função produzirá um CREATE OR REPLACE PROCEDURE instrução para o procedimento armazenado.

O \df Comando


Ao usar o psql, podemos usar o \df comando:
\df

Por padrão, isso retorna apenas objetos criados pelo usuário. Você também pode fornecer um padrão ou o S modificador para incluir objetos do sistema.

Aqui está um exemplo de como fornecer um padrão:
\df *album*

Esse exemplo restringe os resultados apenas às funções/procedimentos com o texto album em seu nome.

Observe que esse comando também retorna funções. O tipo de rotina (por exemplo, func , proc ) está listado em um type coluna na saída.