我正在尝试为我的数据库构建一个文档系统,我希望包含我的函数和触发器的来源。
我设法找到了关于函数和触发器的所有元数据,但这些函数和触发器的实际主体存储在哪里?
答案 0 :(得分:3)
使用函数pg_get_functiondef()
获取完整的函数定义:
SELECT pg_get_functiondef('my_schema.my_func(int)'::regprocedure)
转换为object identifier regprocedure
是获取func_oid
的简单方法,您可以将其输入上述函数。
Per documentation on pg_catalog.pg_proc
:
对于已编译的函数,包括内置和动态加载的
prosrc
包含函数的C语言名称(链接符号)。对于所有其他 目前已知的语言类型prosrc
包含函数的源文本。
仅检索正文:
SELECT prosrc
FROM pg_proc
WHERE oid = 'my_schema.my_func(int)'::regprocedure
答案 1 :(得分:0)
对于这样的事情,我使用pg_dump --schema_only [database]
,但现在我使用我的专业工具以易于比较的格式报告模式:
http://code.activestate.com/recipes/576557-dump-postgresql-db-schema-to-text/
当然它会读取函数/过程体/