sys_proc(函数/过程)¶
这个表存储关于函数(或过程)的信息。包含聚集函数和普通函数的数据。如果 proisagg 为真,那么在 sys_aggregate 里应该有一个匹配行。
| 列名 | 类型 | 描述 |
|---|---|---|
| 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[] | 访问权限 |