如何显示完整的存储过程代码?
你如何查看存储过程/函数?
说我有一个没有原始定义的旧function – 我想看看它在pg / psql中做了什么,但我似乎无法find一种方法来做到这一点。
使用Postgres版本8.4.1
使用pgAdmin或使用pg_proc来获取存储过程的来源。 pgAdmin也一样。
在psql中的 \df+ <function_name>
。
在psql中, \ef <function_name>
。 它会给整个function编辑文本。
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这样的数据库pipe理器应用程序,浏览你感兴趣的对象,并右键点击你的方式来“创build脚本”或类似的。
你是否试图做到这一点…没有pipe理应用程序?