如何在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);