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

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

假设我有一个没有原始定义的旧函数-我想看看它在 pg/psql 中做什么,但似乎找不到一种方法来做到这一点。

使用 Postgres 版本8.4.1

167441 次浏览

通常情况下,您会使用像 PgAdmin这样的 DB 管理器应用程序,浏览到您感兴趣的对象,然后右键单击“ script as create”或类似的命令。

你是想在没有管理软件的情况下做这件事吗?

使用 pgAdmin 或使用 Pg _ proc获取存储过程的源代码。

Psql中的 \df+ <function_name>

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
--      ,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>'

如果在系统中配置了 phpPgAdmin,也可以使用 phpPgAdmin,

步骤1: 选择数据库

步骤2: 单击 find 按钮

步骤3: 将搜索选项更改为函数,然后单击“查找”。

您将获得已定义函数的列表。你也可以按名字搜索函数,希望这个答案对其他人有所帮助。

因为 PostgreSQL 9.1 \sf是可用的。

我们可以使用 pg _ get _ function tiondef ()命令来获得 proc 的完整函数代码。还创建宏使用下面的代码,我们可以使用它作为快捷键,以获得函数代码。 尝试此方法以显示完整的 postgreql 函数代码。

DO
$$
DECLARE
v_Inputtext TEXT;
v_output    text;
BEGIN
v_Inputtext  := (SELECT lower('procedurename'));
v_output     := (SELECT pg_get_functiondef(oid) FROM pg_catalog.pg_proc WHERE proname = v_Inputtext);
RAISE NOTICE '%',v_output;
END;
$$

Https://www.novicetechie.com/2020/01/how-to-display-full-postgresql-function.html

SELECT pg_get_functiondef(( SELECT oid
FROM   pg_proc
WHERE  proname = 'function_name' ));

Sf function _ name (不要用分号)