如何查找 PostgreSQL 中是否存在函数以及位置



我的问题与这里发布的问题的标题相似,但是那里的答案与我需要的要复杂得多。

我的问题很简单...我有一个函数名称说func1,我想知道这个函数是否以及在何处实现的。获取它的位置,它的参数和代码。我尝试使用pg_proc构建一个:

select proname,prosrc from pg_proc where proname like 'func1';

如何添加架构名称、函数代码(文本)和函数参数列表?

另一个让我好奇的问题...如果我搜索lower而不是func1,我可以让它工作吗?较低的是用户未实现的内置函数。

这个问题并没有解决我的整个问题。 因为它没有解释如何在定义函数的模式中获取,也没有解释它是否适用于以 SQL 标准构建的函数,如 lower(字符串)。

一切都在pg_proc表中。

函数的源代码位于prosrc字段中。pronamespace字段是架构标识符(如果需要其名称,则需要联接到pg_namespace表)。

根据pg_proc中的信息重建参数列表并不简单,但SELECT pg_get_function_arguments(oid) FROM pg_proc会为您完成。您可能会发现一些有用的相关函数。

是的,lower()pg_proc,大多数内置函数也是如此(尽管一些,如CAST()COALESCE(),实际上是语法的一部分)。但只有一小部分是用 SQL 编写的;对于大多数人来说,prosrc字段只是在底层 C 代码中给出函数的名称。

相关内容

最新更新