如何查找PostgreSQL中是否存在函数以及在哪里?

时间:2015-06-14 06:38:56

标签: sql postgresql

我的问题类似于发布的问题的标题here但是答案的答案与我需要的不同而且复杂得多。

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

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

如何添加模式名称,功能代码(文本)和函数参数列表?

另一个对我很好奇的问题......如果不是func1我会搜索lower,我可以让它工作吗? lower是build in function,用户未实现。

question无法解决我的整个问题。因为它没有解释如何定义函数定义的模式,以及它是否适用于在SQL标准中构建的函数,如lower(string)。

1 个答案:

答案 0 :(得分:2)

pg_proc table中的所有内容都存在。

该功能的源代码位于prosrc字段中。 pronamespace字段是架构标识符(如果您需要其名称,则需要加入pg_namespace表)。

pg_proc中的信息重建参数列表并不简单,但SELECT pg_get_function_arguments(oid) FROM pg_proc会为您完成。您可能会发现a few related functions有用。

是的,lower()位于pg_proc,大多数内置函数都是如此(尽管有一些函数,如CAST()COALESCE(),实际上是prosrc的一部分3}})。但只有一小部分是用SQL编写的;对于大多数情况,presentAudioRecordingControllerWithOutputURL字段只提供基础grammar中函数的名称。

相关问题