pg_proc
目录pg_proc存放有关函数、过程、聚合函数以及窗口函数(统称为例程)的信息。更多信息请参考CREATE FUNCTION、CREATE PROCEDURE和第 36.3 节。 如果prokind显示该条目用于一个聚合函数,在pg_aggregate中应该有一个相匹配的行。
英文手册覆盖始于 PostgreSQL 7.4. 来源历史与运行验证各自保留独立版本边界。
当前阅读 PG 18·选择有来源记录的版本
- kind
- catalog
- lang
- en
- measured attributes
- true
- metadata release
- 18.6
- runtime verified
- false
- source
- english-manual
版本定义 PG 18
目录pg_proc存放有关函数、过程、聚合函数以及窗口函数(统称为例程)的信息。更多信息请参考CREATE FUNCTION、CREATE PROCEDURE和第 36.3 节。 如果prokind显示该条目用于一个聚合函数,在pg_aggregate中应该有一个相匹配的行。
目录列
| 列 | 类型 | 可空性 | 描述 |
|---|---|---|---|
| oid | oid | 非空 | 行标识符 |
| proname | name | 非空 | 函数的名字 |
| pronamespace | oid | 非空 | 函数所属的名字空间的OID |
| proowner | oid | 非空 | 函数的拥有者 |
| prolang | oid | 非空 | 此函数的实现语言或调用接口 |
| procost | float4 | 非空 | 估计的执行代价(以cpu_operator_cost为单位),如果proretset为真,这是每行返回的代价 |
| prorows | float4 | 非空 | 估计的结果行数量(如果proretset为假,该值为0) |
| provariadic | oid | 非空 | 可变参数数组的元素类型;如果函数没有可变参数,则为零 |
| prosupport | regproc | 非空 | 该函数的规划器支持函数(参见第 36.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 | 非空 | 返回值的数据类型 |
| proargtypes | oidvector | 非空 | 一个函数参数的数据类型的数组。这只包括输入参数(含INOUT和VARIADIC参数),因此也表现了函数的调用签名。 |
| proallargtypes | 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[] | 可空 | 需要应用转换的参数/结果数据类型数组(来自函数的 TRANSFORM 子句)。如果没有,则为 NULL。 |
| prosrc | text | 非空 | 此字段告诉函数处理器如何调用该函数。它可以是解释型语言函数的实际源代码、链接符号、文件名或其他内容,具体取决于实现语言和调用约定。 |
| probin | text | 可空 | 关于如何调用函数的附加信息。其解释是与语言相关的。 |
| prosqlbody | pg_node_tree | 可空 | 预解析的 SQL 函数体。当 SQL 语言函数的函数体采用 SQL 标准表示法给出,而非字符串字面量时,使用此字段。其他情况下为 NULL。 |
| proconfig | text[] | 可空 | 函数对于运行时配置变量的本地设置值 |
| proacl | aclitem[] | 可空 | 访问权限,详见第 5.8 节 |
比较版本
完整来源事实
runtime columns
oid, proname, pronamespace, proowner, prolang, procost, prorows, provariadic, prosupport, prokind, prosecdef, proleakproof, proisstrict, proretset, provolatile, proparallel, pronargs, pronargdefaults, prorettype, proargtypes, proallargtypes, proargmodes, proargnames, proargdefaults, protrftypes, prosrc, probin, prosqlbody, proconfig, proacl
来源引用
定义来源
center · PostgreSQL 18 · english-manuals:fc501feeb941adb173a51e415b57c62c65193bb952688703f38b64445f2a45cf
正文语言: zh-Hans · 2026-09-27@419045e