Ето три опции за изброяване на всички съхранени процедури в база данни на Postgres.
information_schema.routines
Преглед
Този изглед съдържа всички функции и процедури в текущата база данни, до които текущият потребител има достъп (като е собственик или има някакви привилегии).
Ето пример за връщане на списък със съхранени процедури:
SELECT
routine_schema,
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'PROCEDURE';
Чувствайте се свободни да включите още колони, ако е необходимо. Можете да получите дефиницията на процедурата с routine_definition
колона.
pg_proc
Каталог
pg_catalog.pg_proc
каталог съхранява информация за функции, процедури, агрегатни функции и функции на прозореца.
Можем да се присъединим към това с pg_catalog.pg_namespace
каталог за филтриране на резултатите само до процедури с public
пространство от имена:
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';
Филтрирахме до prokind
от p
за ограничаване на резултатите до съхранените процедури.
Възможните стойности са f
за нормална функция, p
за процедура, a
за агрегатна функция или w
за функция на прозореца.
Можете да добавите p.prosrc
колона, за да получите дефиницията на процедурата. Или можете да предадете p.oid
колона към pg_get_functiondef()
функция. Тази функция ще създаде CREATE OR REPLACE PROCEDURE
изявление за съхранената процедура.
\df
Команда
Когато използваме psql, можем да използваме \df
команда:
\df
По подразбиране това връща само създадени от потребителя обекти. Като алтернатива можете да предоставите шаблон или S
модификатор за включване на системни обекти.
Ето пример за предоставяне на шаблон:
\df *album*
Този пример стеснява резултатите само до тези функции/процедури с текст album
на тяхно име.
Имайте предвид, че тази команда също връща функции. Типът на рутинната програма (напр. func
, proc
) е посочен в type
колона в изхода.