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.