43.24. pg_proc

pg_proc 表存儲關于函數(或過程)的信息。 CREATE FUNCTIONSection 33.3 包含一些字段含義的更多信息。

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

Table 43-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一個存放函數參數的數據類型的數組。
prosrctext  這個字段告訴函數句柄如何調用該函數。它實際上對于解釋語言來說就是 函數的源程序,或者一個鏈接符號,一個文件名,或者是任何其他的東西, 具體取決于語言/調用習慣的實現。
probinbytea  關于如何調用該函數的附加信息。同樣,其含義也是和語言相關的。
proaclaclitem[] 訪問權限

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