2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

52.39. pg_proc #

目錄 pg_proc 儲存關於函式、過程、聚合函式和視窗函式(統稱為例程)的資訊。更多資訊請參見 CREATE FUNCTIONCREATE PROCEDURE第 36.3 節

如果 prokind 表明該條目是關於一個聚合函式的,那麼在 pg_aggregate 中應該有一個匹配的行。

表 52.39. pg_proc

列 型別

描述

oid oid

行識別符號

proname name

函式的名稱

pronamespace oid (引用 pg_namespace.oid)

包含此函式的名稱空間的 OID

proowner oid (引用 pg_authid.oid)

函式的擁有者

prolang oid (引用 pg_language.oid)

此函式的實現語言或呼叫介面

procost float4

估計的執行成本(以 cpu_operator_cost 為單位);如果 proretset 為真,則表示每行返回的成本

prorows float4

估計的返回行數(如果 proretset 為假,則為零)

provariadic oid (引用 pg_type.oid)

可變引數陣列元素的 OID,如果函式沒有可變引數則為零

prosupport regproc (引用 pg_proc.oid)

此函式的查詢計劃器支援函式(參見 第 36.11 節),如果沒有則為零

prokind char

普通函式為 f,過程為 p,聚合函式為 a,視窗函式為 w

prosecdef bool

函式是安全定義者(即 setuid 函式)

proleakproof bool

函式沒有副作用。除了返回值外,不透過引數傳遞任何資訊。任何可能因其引數值而丟擲錯誤的函式都不是無害的。

proisstrict bool

如果任何呼叫引數為 NULL,函式返回 NULL。在這種情況下,函式實際上不會被呼叫。非 strict 函式必須能夠處理 NULL 輸入。

proretset bool

函式返回一個集合(即,多個指定資料型別的值)

provolatile char

provolatile 指示函式的返回值是否僅取決於其輸入引數,或者是否受外部因素影響。對於結果總是與相同輸入產生相同值的 immutable 函式,它是 i。對於在掃描過程中(對於固定輸入)結果不變的 stable 函式,它是 s。對於結果可能隨時改變的 volatile 函式,它是 v。(對於有副作用的函式也使用 v,這樣對它們的呼叫就不會被最佳化掉。)

proparallel char

proparallel 指示函式是否可以在並行模式下安全執行。對於沒有限制即可在並行模式下執行的函式,它是 s。對於可以在並行模式下執行但執行僅限於並行組領導者的函式,它是 r;並行工作程序無法呼叫這些函式。對於在並行模式下不安全的函式,它是 u;存在此類函式會強制序列執行計劃。

pronargs int2

輸入引數的數量

pronargdefaults int2

具有預設值的引數數量

prorettype oid (引用 pg_type.oid)

返回值的 OID

proargtypes oidvector (引用 pg_type.oid)

函式引數資料型別 OID 向量。它只包括輸入引數(包括 INOUTVARIADIC 引數),因此代表函式的呼叫簽名。

proallargtypes oid[] (引用 pg_type.oid)

函式引數資料型別 OID 陣列。它包括所有引數(包括 OUTINOUT 引數);然而,如果所有引數都是 IN 引數,則此欄位為 NULL。請注意,下標是從 1 開始的,而出於歷史原因 proargtypes 是從 0 開始下標的。

proargmodes char[]

函式引數模式的陣列,編碼為 IN 引數為 iOUT 引數為 oINOUT 引數為 bVARIADIC 引數為 vTABLE 引數為 t。如果所有引數都是 IN 引數,則此欄位為 NULL。請注意,下標對應於 proallargtypes 的位置,而不是 proargtypes 的位置。

proargnames text[]

函式引數名稱的陣列。沒有名稱的引數在陣列中設定為空字串。如果所有引數都沒有名稱,則此欄位為 NULL。請注意,下標對應於 proallargtypes 的位置,而不是 proargtypes 的位置。

proargdefaults pg_node_tree

預設值的表示式樹(以 nodeToString() 表示)。這是一個包含 pronargdefaults 個元素的列表,對應於最後的 N輸入引數(即,最後 Nproargtypes 的位置)。如果所有引數都沒有預設值,則此欄位為 NULL。

protrftypes oid[] (引用 pg_type.oid)

要應用轉換(來自函式的 TRANSFORM 子句)的引數/結果資料型別 OID 陣列。如果不存在則為 NULL。

prosrc text

這告訴函式處理器如何呼叫函式。它可能是解釋型語言的實際原始碼、連結符號、檔名,或者其他任何內容,具體取決於實現語言/呼叫約定。

probin text

關於如何呼叫函式的附加資訊。同樣,解釋是語言特定的。

prosqlbody pg_node_tree

預解析的 SQL 函式體。這用於 SQL 語言函式,當函式體以 SQL 標準表示法而不是字串字面量給出時。在其他情況下為 NULL。

proconfig text[]

函式執行時配置變數的本地設定

proacl aclitem[]

訪問許可權;有關詳細資訊,請參閱 第 5.8 節


對於編譯型函式,包括內建函式和動態載入函式,prosrc 包含函式的 C 語言名稱(連結符號)。對於 SQL 語言函式,如果函式體是以字串字面量指定的,則 prosrc 包含函式的原始碼;但如果函式體是以 SQL 標準樣式指定的,則 prosrc 未被使用(通常是空字串),而 prosqlbody 包含預解析的定義。對於所有其他當前已知的語言型別,prosrc 包含函式的原始碼。probin 對於動態載入的 C 函式為空,它提供了包含該函式的共享庫檔案的名稱。

提交更正

如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。