Eri*_*984 2 postgresql function
我正在尝试获取函数的完整定义文本,但是每个人都建议的查询返回没有页眉和页脚部分的函数脚本。
这是我正在使用的:
select prosrc from pg_proc where proname='my_func';
Run Code Online (Sandbox Code Playgroud)
这是返回的内容:
DECLARE
some_var1 TEXT;
some_var2 TEXT;
Status character varying;
BEGIN
--SCRIPT CODE HERE
RETURN retval;
END;
Run Code Online (Sandbox Code Playgroud)
但我想要的是这个:
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;
Run Code Online (Sandbox Code Playgroud)
找了一圈也没找到多少。我怎样才能得到这个结果?
使用 SQL:
select pg_catalog.pg_get_functiondef('my_func(date)'::regprocedure::oid);
Run Code Online (Sandbox Code Playgroud)
请注意,regprocedure如果指定参数列表,则应使用type,如果regproc仅指定函数名称(如'my_func'::regproc::oid),则应使用type
并使用psql带有\sf元命令的命令行:
此命令以 CREATE OR REPLACE FUNCTION 命令的形式获取并显示命名函数的定义。定义打印到当前查询输出通道,由 \o 设置。
目标函数可以仅通过名称指定,也可以通过名称和参数指定,例如 foo(integer, text)。如果有多个同名函数,则必须给出参数类型。
从文档中。
例如:
psql -c '\sf my_func(date)'
Run Code Online (Sandbox Code Playgroud)
要检索函数的所有者名称,您可以使用下一个查询:
select proowner::regrole
from pg_proc
where oid = 'my_func(date)'::regprocedure;
Run Code Online (Sandbox Code Playgroud)
使用pg_get_functiondef(func_oid):
SELECT pg_get_functiondef('my_func'::regproc);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4144 次 |
| 最近记录: |