Heim >Datenbank >MySQL-Tutorial >Wie kann ich mit PL/pgSQL mehrere Tabellenfelder als einen einzigen Datensatz in PostgreSQL zurückgeben?

Wie kann ich mit PL/pgSQL mehrere Tabellenfelder als einen einzigen Datensatz in PostgreSQL zurückgeben?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-03 10:55:40529Durchsuche

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

Mehrere Tabellenfelder als Datensatz in PostgreSQL mit PL/pgSQL zurückgeben

Beim Arbeiten mit PL/pgSQL werden mehrere Felder aus mehreren Tabellen zurückgegeben als Datensatz kann durch Verwendung des Datentyps RECORD erreicht werden. Dies ermöglicht die Erstellung eines zusammengesetzten Datentyps, der Felder mit unterschiedlichen Datentypen enthalten kann.

Beispielcode

Betrachten Sie das folgende modifizierte Beispiel, das die zusätzliche Komplexität berücksichtigt zum Abrufen von Feldern aus separaten Zeilen in einer Tabelle:

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;

In diesem Beispiel gibt die Funktion get_two_users_from_school a zurück my_type-Datensatz mit vier Feldern: user1_id, user1_name, user2_id und user2_name. Es ruft die Daten aus der Benutzertabelle ab und organisiert sie, wobei die Zeilen zu einem einzigen, zusammenhängenden Datensatz zusammengefasst werden.

Dynamische Datensatzstruktur

Beachten Sie, dass der zurückgegebene Datensatz nicht streng ist auf eine bestimmte Anzahl von Feldern beschränkt. Sie können eine beliebige Anzahl von Feldern basierend auf den aus der Datenbank abgerufenen Daten zurückgeben.

Verwendung

Um die Funktion zu verwenden, können Sie die folgende Abfrage ausführen:

SELECT * FROM get_two_users_from_school(123);

Dadurch wird ein Datensatz mit Benutzerdetails von der angegebenen Schul-ID zurückgegeben.

Das obige ist der detaillierte Inhalt vonWie kann ich mit PL/pgSQL mehrere Tabellenfelder als einen einzigen Datensatz in PostgreSQL zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn