použijte pg_getfunctiondef
; viz systémové informační funkce. pg_getfunctiondef
byl přidán v PostgreSQL 8.4.
SELECT pg_get_functiondef('proc_name'::regproc);
Chcete-li vypsat všechny funkce ve schématu, můžete se dotazovat na systémové tabulky v pg_catalog
; řekněme, že chcete vše od public
:
SELECT pg_get_functiondef(f.oid)
FROM pg_catalog.pg_proc f
INNER JOIN pg_catalog.pg_namespace n ON (f.pronamespace = n.oid)
WHERE n.nspname = 'public';
je triviální změnit výše uvedené tak, aby říkalo "ze všech schémat kromě těch začínajících pg_
" místo toho, pokud to chcete.
V psql
můžete to uložit do souboru pomocí:
psql -At dbname > /path/to/output/file.sql <<"__END__"
... the above SQL ...
__END__
Chcete-li spustit výstup v jiné databázi, použijte něco jako:
psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name
Pokud však replikujete funkce mezi databázemi, jako je tato, zvažte uložení autorizované kopie definic funkcí jako SQL skript v systému řízení revizí, jako je svn nebo git, nejlépe zabalené jako rozšíření PostgreSQL. Viz rozšíření balení.