gpt4 book ai didi

postgresql - 获取函数 DDL 命令

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

为了版本控制,我需要获取数据库中每个函数的 DDL。 Here是查询,但它仅适用于公共(public)模式中的函数。当我尝试使用它来创建公共(public)和匹配模式中存在的函数时,我收到子查询返回太多行的错误。

通过使用这个查询检查来自 pg_proc 的所有值:

select * from pg_proc where proname = 'match_group_1_3_2';

唯一改变的值是 pronamespace:

enter image description here

如何区分两者(或更多)函数?如果它们在同一架构中但参数不同,如何区分它们? (通过重载)

由于性能问题,我需要使用 native postgres 目录,而不是 ANSI 类型。

最佳答案

还有更多system catalog information functions为您提供更多信息。
您可以从系统表中获取架构名称 pg_namespace :

SELECT n.nspname AS schema_name
,p.proname AS function_name
,pg_get_functiondef(p.oid) AS func_def
,pg_get_function_arguments(p.oid) AS args
,pg_get_function_result(p.oid) AS result
FROM pg_proc p
JOIN pg_namespace n ON n.oid = p.pronamespace
WHERE p.proname ILIKE '%match_group_1_3_2%';

这应该在数据库的任何 模式中找到函数。

关于postgresql - 获取函数 DDL 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17109073/

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