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.