| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 41. 系統資料表 | Fast Forward | Next |
pg_proc 資料表儲存關於函數(或過程)的訊息。 CREATE FUNCTION 和 Section 31.3 包含一些字串含義的更多訊息。
該資料表包含聚集函數和普通函數的資料。 如果 proisagg 為真,那麼在 pg_aggregate 裡應該有一個匹配行。
Table 41-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 | 一個存放函數參數的資料類型的數組。 |
| proargnames | text[] | 一個呆著函數參數的名字的數組。沒有名字的參數在數組裡設置為空字串。 如果沒有一個參數有名字,這個字串可以是空。 | |
| prosrc | text | 這個字串告訴函數句柄如何調用該函數。它實際上對於解釋語言來說就是函數的源程序, 或者一個鏈接符號,一個文件名,或者是任何其他的東西,具體取決於語言/調用習慣的實現。 | |
| probin | bytea | 關於如何調用該函數的附加訊息。同樣,其含義也是和語言相關的。 | |
| proacl | aclitem[] | 訪問權限; 參閱 GRANT 和 REVOKE 獲取細節。 |
對於內置和動態裝載得編譯函數,prosrc 包含函數的 C 語言名字(鏈接符號)。 對於所有其它語言類型,prosrc 包含該函數的源文本。 probin 除了用於動態裝載的 C 函數之外沒有其它用途, 這個時候它給出包含給函數的共享庫的文件名。