历史版本。 PostgreSQL 8.1 已结束支持。 请参阅 当前版本手册.
42.27. pg_proc #
目录pg_proc存放有关函数(或过程)的信息。更多信息请参见CREATE FUNCTION和第 32.3 节。
该表同时包含聚合函数和普通函数的数据。如果proisagg为真,在pg_aggregate中应该有一个相匹配的行。
表 42.27. pg_proc 列
| 名称 | 类型 | 引用 | 描述 |
|---|---|---|---|
proname | name | 函数的名字 | |
pronamespace | oid | | 函数所属的名字空间的OID |
proowner | oid | | 函数的拥有者 |
prolang | oid | | 实现语言或该函数的调用接口 |
proisagg | bool | 该函数是聚合函数 | |
prosecdef | bool | 函数是一个安全性定义者(即,一个“setuid”函数) | |
proisstrict | bool | 当任一调用参数为 NULL 时,函数是否返回空值。在这种情况下,函数实际上根本不会被调用。非“strict”函数必须准备好处理空值输入。 | |
proretset | bool | 函数是否返回一个集合(即,指定数据类型的多个值) | |
provolatile | char | provolatile说明函数是仅仅只依赖于它的输入参数,还是会被外部因素影响。值i表示“不变的”函数,它对于相同的输入总是输出相同的结果。值s表示“稳定的”函数,它的结果(对于固定输入)在一次扫描内不会变化。值v表示“不稳定的”函数,它的结果在任何时候都可能变化(使用v也表示函数具有副作用,因此对它们的调用无法得到优化)
| |
pronargs | int2 | 输入参数的个数 | |
prorettype | oid | | 返回值的数据类型 |
proargtypes | oidvector | | 一个函数参数的数据类型的数组。这只包括输入参数(含 INOUT 参数),因此也表现了函数的调用签名。 |
proallargtypes | oid[] | | 一个函数参数的数据类型的数组。这包括所有参数(含 OUT 和 INOUT 参数)。但是,如果所有参数都是 IN 参数,这个域将为空。注意下标是从1开始,然而由于历史原因proargtypes的下标是从0开始。
|
proargmodes | char[] | 一个函数参数的模式的数组,编码为
i表示 IN 参数,o表示 OUT 参数,b表示 INOUT 参数。如果所有的参数都是 IN 参数,这个域为空。注意这里的下标对应着proallargtypes而不是proargtypes中的位置。
| |
proargnames | text[] | 一个函数参数的名字的数组。没有名字的参数在数组中设置为空字符串。如果没有一个参数有名字,这个域为空。注意这里的下标对应着proallargtypes而不是proargtypes中的位置。
| |
prosrc | text | 这个字段告诉函数处理器如何调用该函数。它可能是针对解释型语言的真实源码、一个链接符号、一个文件名,或任何其他取决于实现语言/调用约定的内容。 | |
probin | text | 关于如何调用函数的附加信息。其解释是与语言相关的。 | |
proacl | aclitem[] | 访问权限,详见GRANT和REVOKE |
对于编译好的函数,包括内置函数和动态装载函数,prosrc包含函数的 C 语言名字(链接符号)。所有其他已知的语言类型,prosrc包含函数的源码文本。除了对于动态载入的C函数之外,probin不使用,对于动态载入的C函数,它给定了包含该函数的共享库文件的名称。