Следующий запрос вернет полные операторы DDL для каждой функции, которой владеет текущий пользователь в общедоступной схеме:
select pg_get_functiondef(p.oid)||';'
from pg_proc p
join pg_namespace n on n.oid = p.pronamespace
join pg_user u on u.usesysid = p.proowner
where n.nspname = 'public'
and p.prokind <> 'a'
and u.usename = current_user;
prokind <> 'a'
необходимо, потому что pg_get_functiondef()
не работает с пользовательскими агрегатными функциями.
Если вам нужны функции из другой схемы или владельца, просто измените условия where
соответствующим образом.
Вы можете буферизовать вывод в файл, чтобы получить скрипт SQL, содержащий все функции.