如何查看存储过程/函数?
假设我有一个没有原始定义的旧函数 - 我想看看它在pg / psql中做了什么,但我似乎无法找到一种方法来做到这一点。
使用Postgres版本8.4.1
答案 0 :(得分:209)
\df+ <function_name>
。
答案 1 :(得分:122)
\ef <function_name>
。它将为整个功能提供可编辑的文本。
答案 2 :(得分:49)
SELECT prosrc FROM pg_proc WHERE proname = 'function_name';
这告诉函数处理程序如何调用该函数。它可能是解释语言,链接符号,文件名或其他任何东西的函数的实际源代码,具体取决于实现语言/调用约定
答案 3 :(得分:19)
使用pgAdmin或使用pg_proc获取存储过程的来源。 pgAdmin做同样的事情。
答案 4 :(得分:12)
使用\df
列出Postgres中的所有存储过程。
答案 5 :(得分:7)
如果有人想知道如何快速查询目录表并使用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
-- ,CASE WHEN NOT p.proisagg THEN pg_get_functiondef(p.oid)
-- ELSE 'pg_get_functiondef() can''t be used with aggregate functions'
-- END 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 NOT p.proisagg
AND n.nspname~'<$SCHEMA_NAME_PATTERN>'
AND proname~'<$FUNCTION_NAME_PATTERN>'
答案 6 :(得分:0)
通常情况下,您使用像pgAdmin这样的数据库管理器应用程序,浏览到您感兴趣的对象,然后右键单击“以创建脚本”或类似方式。
您是否尝试这样做......没有管理应用程序?
答案 7 :(得分:0)
如果您已在系统中对其进行配置,也可以通过phpPgAdmin获得
第1步:选择您的数据库
第2步:点击查找按钮
第3步:将搜索选项更改为功能,然后单击查找。
您将获得已定义函数的列表。您还可以按名称搜索函数,希望此答案对其他人有帮助。
答案 8 :(得分:-3)
要查看存储过程/函数中编写的完整代码(查询),请在命令下方使用:
sp_helptext procedure/function_name
函数名称和过程名称的不要添加前缀dbo。或“ sys”。
不要在过程或函数名称的末尾添加方括号,也不要传递参数。
使用sp_helptext关键字,然后仅传递过程/函数名称。
使用以下命令查看为过程编写的完整代码:
sp_helptext ProcedureName
使用以下命令查看为该功能编写的完整代码:
sp_helptext FunctionName