Aquí hay tres opciones para enumerar todos los procedimientos almacenados en una base de datos de Postgres.
Las information_schema.routines Ver
Esta vista contiene todas las funciones y procedimientos de la base de datos actual a los que tiene acceso el usuario actual (por ser el propietario o tener algún privilegio).
Este es un ejemplo de devolución de una lista de procedimientos almacenados:
SELECT
routine_schema,
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'PROCEDURE';
Siéntase libre de incluir más columnas si es necesario. Puede obtener la definición del procedimiento con routine_definition columna.
El pg_proc Catálogo
El pg_catalog.pg_proc El catálogo almacena información sobre funciones, procedimientos, funciones agregadas y funciones de ventana.
Podemos unir esto con el pg_catalog.pg_namespace catalog para filtrar los resultados a solo procedimientos con public espacio de nombres:
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 a un prokind de p para limitar los resultados a los procedimientos almacenados.
Los valores posibles son f para una función normal, p para un procedimiento, a para una función agregada, o w para una función de ventana.
Puede agregar el p.prosrc columna para obtener la definición del procedimiento. O podría pasar el p.oid columna a pg_get_functiondef() función. Esta función producirá un CREATE OR REPLACE PROCEDURE declaración para el procedimiento almacenado.
El \df Comando
Cuando usamos psql, podemos usar \df comando:
\df
De forma predeterminada, esto devuelve solo objetos creados por el usuario. Alternativamente, puede proporcionar un patrón o la S modificador para incluir objetos del sistema.
Este es un ejemplo de proporcionar un patrón:
\df *album*
Ese ejemplo reduce los resultados a solo esas funciones/procedimientos con el texto album en su nombre.
Tenga en cuenta que este comando también devuelve funciones. El tipo de rutina (por ejemplo, func , proc ) aparece en un type columna en la salida.