如何在postgresql中获得完整的函数定义脚本?

如何在postgresql中获得完整的函数定义脚本?,postgresql,function,Postgresql,Function,我试图获取函数的完整定义文本,但是每个人建议的查询返回的函数脚本没有页眉和页脚部分 以下是我正在使用的: select prosrc from pg_proc where proname='my_func'; 以下是返回的内容: DECLARE some_var1 TEXT; some_var2 TEXT; Status character varying; BEGIN --SCRIPT CODE HERE RETURN retval; END; 但我想要的是: CREATE OR RE

我试图获取函数的完整定义文本,但是每个人建议的查询返回的函数脚本没有页眉和页脚部分

以下是我正在使用的:

select prosrc from pg_proc where proname='my_func';
以下是返回的内容:

DECLARE
some_var1 TEXT;
some_var2 TEXT;
Status character varying;

BEGIN
--SCRIPT CODE HERE

RETURN retval;
END;
但我想要的是:

CREATE OR REPLACE FUNCTION my_func(logdate_utc date)
RETURNS character varying
LANGUAGE 'plpgsql'

COST 100
VOLATILE 
AS $BODY$
DECLARE
some_var1 TEXT;
some_var2 TEXT;
Status character varying;

BEGIN
--SCRIPT CODE HERE

RETURN retval;
END;
$BODY$;

ALTER FUNCTION my_func(date)
    OWNER TO some_owner;
到处找,没找到多少。如何获得该结果?

使用SQL:

 select pg_catalog.pg_get_functiondef('my_func(date)'::regprocedure::oid);

请注意,如果指定参数列表,则应使用
regprocedure
type;如果仅指定函数名,则应使用
regproc
type(如
'my_func'::regproc::oid

并使用命令行
psql
\sf
元命令:

此命令以创建或替换函数命令的形式获取并显示命名函数的定义。定义将打印到当前查询输出通道,如\o所设置

目标函数可以单独按名称指定,也可以按名称和参数指定,例如foo(integer,text)。如果有多个同名函数,则必须给出参数类型

例如:

psql -c '\sf my_func(date)'
要检索函数的所有者名称,可以使用下一个查询:

select proowner::regrole
from pg_proc
where oid = 'my_func(date)'::regprocedure;
使用:

SELECT pg_get_functiondef('my_func'::regproc);