如何显示完整的存储过程代码?

你如何查看存储过程/函数?

说我有一个没有原始定义的旧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理应用程序?