41.24. pg_proc

pg_proc 資料表儲存關於函數(或過程)的訊息。 CREATE FUNCTIONSection 31.3 包含一些字串含義的更多訊息。

該資料表包含聚集函數和普通函數的資料。 如果 proisagg 為真,那麼在 pg_aggregate 裡應該有一個匹配行。

Table 41-24. pg_proc 字串

名字類型引用描述
pronamename 函數名字
pronamespaceoidpg_namespace.oid 包含該函數名字空間的 OID。
proownerint4pg_shadow.usesysid函數所有者(建立者)
prolangoidpg_langauge.oid這個函數的實現語言或調用接口
proisaggbool 函數是聚集函數
prosecdefbool 函數是一個安全定義器(也就是說,一個"setuid"函數)
proisstrictbool  如果任何調用參數是空,那麼函數返回空。這時函數實際上連調用都不調用。 不是"strict"的函數必須準備處理空輸入。
proretsetbool 函數返回一個集合(也就是說,指定資料類型的多個數值)
provolatilechar  provolatile 告訴我們該函數的結果是否只倚賴於它的輸入參數,或者還會被外接因素影響。 對於"不可變的(immutable)"函數它是i, 這樣的函數對於相同的輸入總是產生相同的結果。 對於"穩定(stable)"的函數它是 s, (對於固定輸入)其結果在一次掃瞄裡不變。 對於"易變(volatile)"函數它是 v, 其結果可能在任何時候變化。(v 也用於那些有副作用的函數,因此調用它們無法得到優化。)
pronargsint2 參數數目
prorettypeoidpg_type.oid返回值的資料類型
proargtypesoidvectorpg_type.oid一個存放函數參數的資料類型的數組。
proargnamestext[]  一個呆著函數參數的名字的數組。沒有名字的參數在數組裡設置為空字串。 如果沒有一個參數有名字,這個字串可以是空。
prosrctext  這個字串告訴函數句柄如何調用該函數。它實際上對於解釋語言來說就是函數的源程序, 或者一個鏈接符號,一個文件名,或者是任何其他的東西,具體取決於語言/調用習慣的實現。
probinbytea  關於如何調用該函數的附加訊息。同樣,其含義也是和語言相關的。
proaclaclitem[] 訪問權限; 參閱 GRANTREVOKE 獲取細節。

對於內置和動態裝載得編譯函數,prosrc 包含函數的 C 語言名字(鏈接符號)。 對於所有其它語言類型,prosrc 包含該函數的源文本。 probin 除了用於動態裝載的 C 函數之外沒有其它用途, 這個時候它給出包含給函數的共享庫的文件名。