首頁 >資料庫 >mysql教程 >如何使用 PL/pgSQL 在 PostgreSQL 中將多個表格欄位作為單一記錄傳回?

如何使用 PL/pgSQL 在 PostgreSQL 中將多個表格欄位作為單一記錄傳回?

Patricia Arquette
Patricia Arquette原創
2025-01-03 10:55:40541瀏覽

How to Return Multiple Table Fields as a Single Record in PostgreSQL using PL/pgSQL?

使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn