sys_proc(函数/过程)

这个表存储关于函数(或过程)的信息。包含聚集函数和普通函数的数据。如果 proisagg 为真,那么在 sys_aggregate 里应该有一个匹配行。

表112 SYS_PROC 结构
列名 类型 描述
OID OID 函数(或过程)OID
PROARGTYPES OIDVECTOR 函数参数的数据类型的向量
PROARGINOUT INT2VECTOR 参数输入输出
PRONAME NAME 函数名字
PRONAMESPACE OID 包含该函数名字空间的 OID
PROOWNER INT 函数所有者(创建者)
PROISFUNC INT 0表示存储过程PROCEDURE,1和2表示函数FUNCTION,其中2特指开窗(Window)函数
PROLANG OID 这个函数的实现语言或调用接口,10表示PLOSCAR过程化语言实现,12表示内部C函数实现,13表示第三方动态库的内部C函数实现,14表示SQL语句实现
PRORETTYPE OID 返回值的数据类型(如果函数不返回值则为2278)
PRONARGS SMALLINT 参数数目
PROISAGG BOOLEAN 函数是聚集函数
PROSECDEF BOOLEAN 函数是安全定义函数(如一个"set setuid"函数)
PROISSTRICT BOOLEAN 如果任何调用参数是空,那么函数返回空。这时函数实际上连调用都不调用。不是"strict"的函数必须准备处理空输入
PRORETSET BOOLEAN 函数返回一个集合(也就是说,指定数据类型的多个数值)
PROVOLATILE "CHAR" provolatile告诉我们该函数的结果是否只倚赖于它的输入参数,或者还会被外接因素影响。对于"不可变的(immutable)"函数它是i,这样的函数对于相同的输入总是产生相同的结果。对于"稳定(stable)"的函数它是 s,(对于固定输入)其结果在一次扫描里不变。对于"易变(volatile)"函数它是 v,其结果可能在任何时候变化。(v 也用于那些有副作用的函数,因此调用它们无法得到优化)
PROPERTIES BIGINT 函数属性
PROSRC TEXT 这个字段告诉函数句柄如何调用该函数。它实际上对于解释语言来说就是函数的源程序,或者一个链接符号,一个文件名,或者是任何其他的东西,具体取决于语言/调用习惯的实现
PROBIN BYTEA 关于如何调用该函数的附加信息。同样,其含义也是和语言相关的
PROACL ACLITEM[] 访问权限