在PL/pgSQL 中將不同表中的多個字段作為單一記錄傳回需要使用以下命令建構自訂記錄所需的欄位組成。以下是實現此目的的方法:
使用 CREATE TYPE語句定義記錄類型以指定欄位及其資料類型:
CREATE TYPE my_record_type AS ( field1 text, field2 integer, field3 boolean );
在SP中,使用DECLARE語句宣告一個記錄類型的變量,並填入其欄位:
DECLARE result my_record_type; BEGIN SELECT field1, field2, field3 INTO result FROM table1; -- Retrieve and populate additional fields from other tables RETURN result; END
要從表中檢索多行並將它們聚合到單一記錄中,請考慮使用子查詢。例如,要從使用者表中檢索並展平行:
DECLARE result my_record_type; BEGIN SELECT id, name FROM ( SELECT id, name FROM user WHERE school_id = InputSchoolId LIMIT 2 ) AS subquery INTO result; RETURN result; END
定義函數後,調用它來檢索記錄:
SELECT get_object_fields('name') AS record_output;
結果將是包含指定欄位的記錄
雖然不鼓勵使用CREATE TYPE來實現多型結果,但您可以利用 RECORD 類型來獲得靈活性。例如:
CREATE FUNCTION test_ret(a text, b text) RETURNS RECORD AS $$ DECLARE result RECORD; BEGIN IF LENGTH(a) < LENGTH(b) THEN result = (TRUE, (a || b)::text, 'a shorter than b'::text); ELSE result = (FALSE, (b || a)::text, NULL::text); END IF; RETURN result; END;$$ LANGUAGE plpgsql;
這允許傳回具有不同列數的記錄。
以上是如何使用 PL/pgSQL 從多個 PostgreSQL 表中檢索和合併記錄欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!