從Postgres 中的函數傳回虛擬表
在Postgres 中,使用函數建立具有多行和多列的自訂虛擬表需要特定的句法。本文示範如何正確編寫一個傳回類似虛擬表的記錄集的函數。
正確語法
定義一個傳回包含三個記錄的虛擬表的函數整數列,使用以下 PL/pgSQL code:
CREATE OR REPLACE FUNCTION f_foo() RETURNS TABLE (a int, b int, c int) AS $func$ BEGIN RETURN QUERY VALUES (1,2,3) , (3,4,5) , (3,4,5) ; END $func$ LANGUAGE plpgsql IMMUTABLE ROWS 3;
說明
替代選項
簡單SQL:對於簡單場景,一條普通的SQL語句就夠了:
VALUES (1,2,3), (3,4,5), (3,4,5)
SQL函數:你也可以將上面的內容包裝起來SQL 函數中的語句:
CREATE OR REPLACE FUNCTION f_foo() RETURNS TABLE (a int, b int, c int) AS $func$ VALUES (1, 2, 3) , (3, 4, 5) , (3, 4, 5); $func$ LANGUAGE sql IMMUTABLE ROWS 3;
用法
擷取虛擬表:
SELECT * FROM f_foo();
以上是如何從 Postgres 函數傳回虛擬表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!