sql >> Base de Datos >  >> RDS >> PostgreSQL

3 formas de enumerar todos los procedimientos almacenados en una base de datos PostgreSQL

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.