| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 43. 系統表 | Fast Forward | Next |
pg_proc 表存儲關于函數(或過程)的信息。 CREATE FUNCTION 和 Section 33.3 包含一些字段含義的更多信息。
該表包含聚集函數和普通函數的數據。 如果 proisagg 為真,那麼在 pg_aggregate 裡應該有一個匹配行。
Table 43-24. pg_proc 字段
| 名字 | 類型 | 引用 | 描述 |
|---|---|---|---|
| proname | name | 函數名字 | |
| pronamespace | oid | pg_namespace.oid | 包含該函數名字空間的 OID。 |
| proowner | int4 | pg_shadow.usesysid | 函數所有者(創建者) |
| prolang | oid | pg_langauge.oid | 這個函數的實現語言或調用接口 |
| proisagg | bool | 函數是聚集函數 | |
| prosecdef | bool | 函數是一個安全定義器(也就是說,一個"setuid"函數) | |
| proisstrict | bool | 如果任何調用參數是空,那麼函數返回空。這時函數實際上連調用都不調用。 不是"strict"的函數必須準備處理空輸入。 | |
| proretset | bool | 函數返回一個集合(也就是說,指定數據類型的多個數值) | |
| provolatile | char | provolatile 告訴我們該函數的結果是否 只倚賴于它的輸入參數,或者還會被外接因素影響。 對于"不可變的(immutable)"函數它是i, 這樣的函數對于相同的輸入總是產生相同的結果。 對于"穩定(stable)"的函數它是 s, (對于固定輸入)其結果在一次掃描裡不變。 對于"易變(volatile)"函數它是 v, 其結果可能在任何時候變化。(v 也用于那些 有副作用的函數,因此調用它們無法得到優化。) | |
| pronargs | int2 | 參數數目 | |
| prorettype | oid | pg_type.oid | 返回值的數據類型 |
| proargtypes | oidvector | pg_type.oid | 一個存放函數參數的數據類型的數組。 |
| prosrc | text | 這個字段告訴函數句柄如何調用該函數。它實際上對于解釋語言來說就是 函數的源程序,或者一個鏈接符號,一個文件名,或者是任何其他的東西, 具體取決于語言/調用習慣的實現。 | |
| probin | bytea | 關于如何調用該函數的附加信息。同樣,其含義也是和語言相關的。 | |
| proacl | aclitem[] | 訪問權限 |
如果是編譯函數的話,prosrc 包含函數的 C 語言名字(鏈接符號), 包括內建函數和動態裝載的函數。對于所有其它語言類型,prosrc 包含該 函數的源文本。 probin 除了用于動態裝載的 C 函數之外沒有其它用途, 這個時候它給出包含給函數的共享庫的文件名。