使用PL/pgSQL 將多個欄位作為記錄傳回PostgreSQL
使用PL/pgSQL 時,您可能會遇到需要傳回組合多個表格中的欄位的記錄。這可以透過利用 Postgres 的 RECORD 資料類型來實現。
使用 RECORD 進行多表格欄位檢索
要將不同表格中的欄位作為單一記錄中的欄位傳回,將 RECORD類型中所需的欄位定義為如下:
CREATE OR REPLACE FUNCTION get_object_fields(name text) RETURNS RECORD AS $$ BEGIN -- Retrieve required fields from various tables based on input name -- Return fields as a RECORD RETURN RECORD(f1, f2, f3, f4, f5, f6, f7, f8); END $$ LANGUAGE PL/pgSQL;
處理多個結果行
對於具有多個欄位值的行需要「展平」為單一記錄的複雜場景,需要更多的參與方法是必要的。考慮以下程式碼:
CREATE OR REPLACE FUNCTION get_two_users_from_school(schoolid int) RETURNS my_type AS $$ DECLARE result my_type; temp_result user; BEGIN -- Fetch two rows for illustration SELECT id, name INTO temp_result FROM user WHERE school_id = schoolid LIMIT 2; -- Assign values to the RECORD fields using pseudocode (adjust indices for actual row counts) result.user1_id := temp_result[0].id; result.user1_name := temp_result[0].name; result.user2_id := temp_result[1].id; result.user2_name := temp_result[1].name; RETURN result; END $$ LANGUAGE PL/pgSQL;
記錄類型的優點
RECORD 類型提供了幾個優點:
以上是如何使用 PL/pgSQL 將不同 PostgreSQL 表中的多個欄位作為單一記錄傳回?的詳細內容。更多資訊請關注PHP中文網其他相關文章!