↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本。 PostgreSQL 13 已结束支持。 2025-11-13. 请参阅 当前版本手册.

51.38. pg_proc #

目录 pg_proc 存放有关函数、过程、聚合函数以及窗口函数(统称为例程)的信息。更多信息请参考 CREATE FUNCTION、CREATE PROCEDURE 和第 37.3 节。

如果 prokind 显示该条目用于一个聚合函数,在 pg_aggregate 中应该有一个相匹配的行。

表 51.38. pg_proc 列

列类型

描述

oid oid

行标识符

proname name

函数的名字

pronamespace oid(引用 pg_namespace.oid)

函数所属的名字空间的 OID

proowner oid(引用 pg_authid.oid)

函数的拥有者

prolang oid(引用 pg_language.oid)

此函数的实现语言或调用接口

procost float4

估计的执行代价(以 cpu_operator_cost 为单位),如果 proretset 为真,这是每行返回的代价

prorows float4

估计的结果行数量(如果 proretset 为假,该值为 0)

provariadic oid(引用 pg_type.oid)

可变参数数组的元素类型;如果函数没有可变参数,则为零

prosupport regproc(引用 pg_proc.oid)

该函数可选的规划器支持函数(参见第 37.11 节)

prokind char

f 表示普通函数,p 表示过程,a 表示聚合函数,w 表示窗口函数

prosecdef bool

函数是否为安全定义者函数(即“setuid”函数)

proleakproof bool

该函数没有副作用。除返回值外,不会泄露任何关于参数的信息。任何可能因参数值而报错的函数都不是 leakproof。

proisstrict bool

任一调用实参为 NULL 时,函数返回 NULL。在这种情况下,实际上根本不会调用该函数。非“严格”函数必须能够处理 NULL 输入。

proretset bool

函数是否返回一个集合(即,指定数据类型的多个值)

provolatile char

provolatile 表示函数的结果是否仅依赖输入实参,还是也受外部因素影响。i 表示“不变的”函数,相同输入总是产生相同结果。s 表示“稳定的”函数,对于固定输入,其结果在一次扫描内不变。v 表示“易失的”函数,其结果随时可能变化。(有副作用的函数也应使用 v,以免对它们的调用在优化时被消除。)

proparallel char

proparallel 表示函数是否可以在并行模式下安全运行。s 表示可以不受限制地在并行模式下安全运行的函数。r 表示可以在并行模式下运行、但仅限并行组领导者执行的函数;并行工作者进程不能调用这些函数。u 表示在并行模式下不安全的函数;此类函数的存在会强制采用串行执行计划。

pronargs int2

输入参数的个数

pronargdefaults int2

具有默认值的参数个数

prorettype oid(引用 pg_type.oid)

返回值的数据类型

proargtypes oidvector(引用 pg_type.oid)

一个函数参数的数据类型的数组。这只包括输入参数(含 INOUT 和 VARIADIC 参数),因此也表现了函数的调用签名。

proallargtypes oid[](引用 pg_type.oid)

一个函数参数的数据类型的数组。这包括所有参数(含 OUT 和 INOUT 参数)。但是,如果所有参数都是 IN 参数,此字段为 NULL。注意下标是从 1 开始,然而由于历史原因 proargtypes 的下标是从 0 开始。

proargmodes char[]

一个函数参数的模式的数组。这里包括:i 表示 IN 参数,o 表示 OUT 参数,b 表示 INOUT 参数,v 表示 VARIADIC 参数,t 表示 TABLE 参数。如果所有的参数都是 IN 参数,此字段为 NULL。注意这里的下标对应着 proallargtypes 而不是 proargtypes 中的位置。

proargnames text[]

一个函数参数的名字的数组。没有名字的参数在数组中设置为空字符串。如果没有一个参数有名字,此字段为 NULL。注意这里的下标对应着 proallargtypes 而不是 proargtypes 中的位置。

proargdefaults pg_node_tree

默认值的表达式树(以 nodeToString() 表示)。这是一个包含 pronargdefaults 个元素的列表,对应最后 N 个输入参数(即最后 N 个 proargtypes 位置)。如果没有参数具有默认值,则此字段为 NULL。

protrftypes oid[](引用 pg_type.oid)

需要应用转换的参数/结果数据类型数组(来自函数的 TRANSFORM 子句)。如果没有,则为 NULL。

prosrc text

此字段告诉函数处理器如何调用该函数。它可以是解释型语言函数的实际源代码、链接符号、文件名或其他内容,具体取决于实现语言和调用约定。

probin text

关于如何调用函数的附加信息。其解释是与语言相关的。

proconfig text[]

函数对于运行时配置变量的本地设置值

proacl aclitem[]

访问权限,详见第 5.7 节


对于编译型函数,无论是内置函数还是动态加载的函数,prosrc 都包含函数的 C 语言名称(链接符号)。对于目前已知的所有其他语言类型,prosrc 包含函数的源文本。不使用 probin,但动态加载的 C 函数除外:此时它给出包含该函数的共享库文件名。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.