The PostgreSQL type system contains a number of special-purpose entries that are collectively called pseudo-types. A pseudo-type cannot be used as a column data type, but it can be used to declare a function's argument or result type. Each of the available pseudo-types is useful in situations where a function's behavior does not correspond to simply taking or returning a value of a specificSQLdata type. 表 8.27 lists the existing pseudo-types.
表 8.27. 偽型別
名稱 | 描述 |
---|---|
任意 |
表示函式接受任何輸入資料型別。 |
anyelement |
表示函式接受任何資料型別(參見 第 36.2.5 節)。 |
anyarray |
表示函式接受任何陣列資料型別(參見 第 36.2.5 節)。 |
anynonarray |
表示函式接受任何非陣列資料型別(參見 第 36.2.5 節)。 |
anyenum |
表示函式接受任何列舉資料型別(參見 第 36.2.5 節 和 第 8.7 節)。 |
anyrange |
表示函式接受任何範圍資料型別(參見 第 36.2.5 節 和 第 8.17 節)。 |
anymultirange |
表示函式接受任何多範圍資料型別(參見 第 36.2.5 節 和 第 8.17 節)。 |
anycompatible |
表示函式接受任何資料型別,並自動將多個引數提升到公共資料型別(參見 第 36.2.5 節)。 |
anycompatiblearray |
表示函式接受任何陣列資料型別,並自動將多個引數提升到公共資料型別(參見 第 36.2.5 節)。 |
anycompatiblenonarray |
表示函式接受任何非陣列資料型別,並自動將多個引數提升到公共資料型別(參見 第 36.2.5 節)。 |
anycompatiblerange |
表示函式接受任何範圍資料型別,並自動將多個引數提升到公共資料型別(參見 第 36.2.5 節 和 第 8.17 節)。 |
anycompatiblemultirange |
表示函式接受任何多範圍資料型別,並自動將多個引數提升到公共資料型別(參見 第 36.2.5 節 和 第 8.17 節)。 |
cstring |
表示函式接受或返回一個以 null 結尾的 C 字串。 |
internal |
表示函式接受或返回一個伺服器內部資料型別。 |
language_handler |
一個過程語言呼叫處理器被宣告為返回 language_handler 。 |
fdw_handler |
一個外部資料包裝器處理器被宣告為返回 fdw_handler 。 |
table_am_handler |
一個表訪問方法處理器被宣告為返回 table_am_handler 。 |
index_am_handler |
一個索引訪問方法處理器被宣告為返回 index_am_handler 。 |
tsm_handler |
一個表取樣方法處理器被宣告為返回 tsm_handler 。 |
record |
標識一個接受或返回未指定行型別的函式。 |
trigger |
一個觸發器函式被宣告為返回 trigger 。 |
event_trigger |
一個事件觸發器函式被宣告為返回 event_trigger 。 |
pg_ddl_command |
標識一個可用於事件觸發器的 DDL 命令的表示。 |
void |
表示函式不返回值。 |
unknown |
標識一個尚未解析的型別,例如,未修飾的字串字面量。 |
用 C 語言編寫的函式(無論是內建還是動態載入的)都可以宣告接受或返回這些偽型別中的任何一種。函式作者有責任確保在將偽型別用作引數型別時,函式能夠安全地執行。
用過程語言編寫的函式只能在其實現語言允許的情況下使用偽型別。目前,大多數過程語言禁止將偽型別用作引數型別,並且只允許 void
和 record
作為返回型別(當函式用作觸發器或事件觸發器時,還包括 trigger
或 event_trigger
)。一些語言還支援使用多型偽型別(如上所示,並在 第 36.2.5 節 中詳細討論)的多型函式。
偽型別 internal
用於宣告僅供資料庫系統內部呼叫的函式,而不是透過直接在查詢中呼叫。如果一個函式至少有一個 internal
型別的引數,那麼它就不能從SQL查詢中呼叫。為了保持這種限制的型別安全,遵循以下編碼規則很重要:不要建立任何宣告返回 internal
的函式,除非它至少有一個 internal
引數。SQL. To preserve the type safety of this restriction it is important to follow this coding rule: do not create any function that is declared to return internal
unless it has at least one internal
argument.
如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表格 報告文件問題。