如何显示函数或过程的完整定义?
如何查看存储函数或过程?
假设我有一个没有原始定义的旧函数 - 我想看看它在做什么,但我似乎无法找到一种方法来做到这一点。
使用 Postgres 版本 8.4.1。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何查看存储函数或过程?
假设我有一个没有原始定义的旧函数 - 我想看看它在做什么,但我似乎无法找到一种方法来做到这一点。
使用 Postgres 版本 8.4.1。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(13)
psql\df+一个>。
\df+ <function_name>
in psql.psql 中的
\ef
。它将为整个功能提供可编辑的文本。\ef <function_name>
in psql. It will give the whole function with editable text.这告诉函数处理程序如何调用该函数。它可能是解释语言函数的实际源代码、链接符号、文件名或其他任何内容,具体取决于实现语言/调用约定
This tells the function handler how to invoke the function. It might be the actual source code of the function for interpreted languages, a link symbol, a file name, or just about anything else, depending on the implementation language/call convention
使用 pgAdmin 或使用 pg_proc 获取您的存储过程。 pgAdmin 也做同样的事情。
use pgAdmin or use pg_proc to get the source of your stored procedures. pgAdmin does the same.
使用
\df
列出 Postgres 中的所有存储过程。Use
\df
to list all the stored procedure in Postgres.如果有人想知道如何快速查询目录表并使用 pg_get_functiondef() 函数,这里是示例查询:
If anyone wonders how to quickly query catalog tables and make use of the
pg_get_functiondef()
function here's the sample query:由于 PostgreSQL 9.1
\sf
可用。Since PostgreSQL 9.1
\sf
is available.(末尾不要加分号)
(don't put a semicolon at the end)
*在这个答案中,我介绍了几种显示函数代码的方法,如下所示,但您也可以使用下面的这些方法来显示过程的代码。
例如,您创建
my_func()
函数,如下所示。然后,您可以使用 \sf 如下图:
*备注:
+
可以显示行号。您可以省略架构
public。
。或者,您可以使用 my_func() 的代码>pg_get_functiondef() 和
my_func()
的 OID(对象标识符)如下所示:*备注:
public.
。或者,您可以使用 [pg_proc][4] 仅显示
my_func()
的主体代码,如下所示:或者,您可以仅显示
my_func()
的代码与 information_schema.routines 如下所示:*In this answer, I introduce several ways to show the code of a function as shown below but you can also use these ways below to show the code of a procedure.
For example, you create
my_func()
function as shown below.Then, you can show the code of
my_func()
with \sf as shown below:*Memos:
+
can show line numbers.You can omit the schema
public.
.Or, you can show the code of
my_func()
with pg_get_functiondef() and the OID(Object identifier) ofmy_func()
as shown below:*Memos:
public.
.Or, you can show only the body code of
my_func()
with [pg_proc][4] as shown below:Or, you can show only the code of
my_func()
with information_schema.routines as shown below:如果您在系统中进行了配置,您也可以通过 phpPgAdmin 获取,
步骤 1:选择您的数据库
步骤 2:单击查找按钮
步骤 3:将搜索选项更改为功能,然后单击查找。
您将获得已定义函数的列表。您也可以按名称搜索函数,希望这个答案对其他人有帮助。
You can also get by phpPgAdmin if you are configured it in your system,
Step 1: Select your database
Step 2: Click on find button
Step 3: Change search option to functions then click on Find.
You will get the list of defined functions.You can search functions by name also, hope this answer will help others.
通常来说,您会使用数据库管理器应用程序,例如 pgAdmin,浏览到您感兴趣的对象,并右键单击“脚本作为创建”或类似的方式。
您是否想在没有管理应用程序的情况下执行此操作?
Normally speaking you'd use a DB manager application like pgAdmin, browse to the object you're interested in, and right click your way to "script as create" or similar.
Are you trying to do this... without a management app?