gpt4 book ai didi

postgresql - 如何获取 PostgreSQL 中函数的源代码,包括其创建或替换格式的参数?

转载 作者:行者123 更新时间:2023-11-29 13:08:24 25 4
gpt4 key购买 nike

我正在寻找一种方法来显示在 PostgreSQL 中创建特定例程的命令。我找到了一个解决方案:

SELECT routine_definition
FROM information_schema.routines
WHERE routine_type='FUNCTION' AND specific_schema='public' AND routine_name = 'my_func'

在我的例子中返回:

begin
insert into person ("name", "age") values (_name, _age)
on conflict on constraint person_name_uk do update
set age = _age
where person.name = _name;
end

但我需要这样的输出:

CREATE OR REPLACE FUNCTION public.my_func(_name character varying, _age integer)
RETURNS void
LANGUAGE plpgsql
AS $function$
begin
insert into person ("name", "age") values (_name, _age)
on conflict on constraint person_name_uk do update
set age = _age
where person.name = _name;
end
$function$
;

我查看了 information_schema.routines 的字段,但没有发现任何可以帮助我构建所需输出的内容。可能有另一个存储它的地方或我可以使用的标准函数。

我需要一个开头没有斜杠的解决方案。我的意思是,像 \ef 这样的东西都不适合,因为我不能在复杂语句中使用它。

最佳答案

pg_get_functiondef 完全符合您的要求:

SELECT pg_get_functiondef('public.my_func'::regproc);

关于postgresql - 如何获取 PostgreSQL 中函数的源代码,包括其创建或替换格式的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58220362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com