Как вы просматриваете хранимую процедуру/функцию?
Скажем, у меня есть старая функция без оригинального определения - я хочу посмотреть, что она делает в pg/psql, но я не могу понять, как это сделать.
с использованием Postgres версии 8.4.1
Как вы просматриваете хранимую процедуру/функцию?
Скажем, у меня есть старая функция без оригинального определения - я хочу посмотреть, что она делает в pg/psql, но я не могу понять, как это сделать.
с использованием Postgres версии 8.4.1
используйте pgAdmin или используйте pg_proc, чтобы получить источник ваших хранимых процедур. pgAdmin делает то же самое.
\df+ <function_name>
в psql.
\ef <function_name>
в psql. Это даст всю функцию с редактируемым текстом.
SELECT prosrc FROM pg_proc WHERE proname = 'function_name';
Это указывает обработчику функции, как вызвать функцию. Это может быть фактический исходный код функции для интерпретируемых языков, символ ссылки, имя файла или что-то еще, в зависимости от языка/соглашения об использовании
Используйте \df
, чтобы перечислить всю хранимую процедуру в Postgres.
Если кто-то задается вопросом, как быстро запросить таблицы каталогов и использовать функцию pg_get_functiondef()
здесь пример запроса:
SELECT n.nspname AS schema
,proname AS fname
,proargnames AS args
,t.typname AS return_type
,d.description
,pg_get_functiondef(p.oid) as definition
FROM pg_proc p
JOIN pg_type t
ON p.prorettype = t.oid
LEFT OUTER
JOIN pg_description d
ON p.oid = d.objoid
LEFT OUTER
JOIN pg_namespace n
ON n.oid = p.pronamespace
WHERE n.nspname~'<$SCHEMA_NAME_PATTERN>'
AND proname~'<$FUNCTION_NAME_PATTERN>'
Обычно вы используете приложение менеджера баз данных, например pgAdmin, просматриваете интересующий вас объект и правильно щелкните свой путь до "script как создать" или аналогичный.
Вы пытаетесь сделать это... без приложения управления?