使用PL/pgSQL 在PostgreSQL 中將多個欄位作為記錄傳回
在PL/pgSQL 中,建立一個從不同的欄位傳回多個欄位的函數表作為單一記錄可以透過RECORD類型來實現。操作方法如下:
RECORD 類型
宣告一個 RECORD 類型來定義要傳回的欄位。例如:
CREATE TYPE person AS ( name text, age integer, city text );
查詢不同的表
在您的 PL/pgSQL 函數中,使用查詢從不同的表中檢索欄位。例如,如果您有表格 users、addresses 和 city,則可以編寫:
SELECT u.name, u.age, a.city FROM users AS u JOIN addresses AS a ON u.address_id = a.id WHERE u.user_id = @user_id;
儲存查詢結果
將查詢結果儲存在記錄變數中。 RECORD 類型可讓您以列名存取欄位:
DECLARE result person; SELECT u.name, u.age, a.city INTO result;
傳回記錄
最後回傳結果記錄:
RETURN result;
處理不規則行為結果
如果您可能從不同的表中檢索到不一致的行數,請使用coalesce() 函數提供後備值:
SELECT coalesce(u.name, 'Unknown'), coalesce(u.age, 0), coalesce(a.city, 'N/A') INTO result;
子查詢範例
如果您需要返回的資料作為單獨的行儲存在單一表中,請使用子查詢:
CREATE FUNCTION get_two_users_from_school(schoolid int) RETURNS my_type AS $$ DECLARE result my_type; BEGIN -- Select first two users from school SELECT id, name FROM user WHERE school_id = schoolid ORDER BY id LIMIT 2 INTO result; RETURN result; END $$ language plpgsql;
這種方法允許您將行「展平」為單一記錄結構。
以上是如何使用 PL/pgSQL 在 PostgreSQL 中將多個欄位作為單一記錄傳回?的詳細內容。更多資訊請關注PHP中文網其他相關文章!