使用PL/pgSQL 將多個表格欄位作為PostgreSQL 中的記錄傳回
使用PL/pgSQL 時,從多個資料表傳回多個欄位作為記錄可以透過使用RECORD 資料類型來實現。這允許建立可以保存具有不同資料類型的欄位的複合資料類型。
範例程式碼
考慮以下修改後的範例,它解決了額外的複雜性從表中的單獨行檢索欄位:
CREATE TABLE user (id int, school_id int, name varchar(32)); CREATE TYPE my_type AS ( user1_id int, user1_name varchar(32), user2_id int, user2_name varchar(32) ); CREATE OR REPLACE FUNCTION get_two_users_from_school(schoolid int) RETURNS my_type AS $$ DECLARE result my_type; temp_result user; BEGIN SELECT id, name INTO temp_result FROM user WHERE school_id = schoolid ORDER BY id ASC LIMIT 2; result.user1_id := temp_result[1].id; result.user1_name := temp_result[1].name; IF temp_result[2].id IS NOT NULL THEN result.user2_id := temp_result[2].id; result.user2_name := temp_result[2].name; END IF; RETURN result; END $$ language plpgsql;
在此範例中, get_two_users_from_school函數傳回包含四個欄位的my_type記錄:user1_id、user1_name、user2_id 和 user2_name。它從使用者表中檢索和組織數據,將行扁平化為單一內聚記錄。
動態記錄結構
請注意,傳回的記錄並不嚴格僅限於特定數量的欄位。您可以根據從資料庫檢索的資料傳回任意數量的欄位。
用法
要使用該函數,您可以執行以下查詢:
SELECT * FROM get_two_users_from_school(123);
這將傳回一條記錄,其中包含指定學校ID的用戶詳細資訊。
以上是如何使用 PL/pgSQL 在 PostgreSQL 中將多個表格欄位作為單一記錄傳回?的詳細內容。更多資訊請關注PHP中文網其他相關文章!