Heim >Datenbank >MySQL-Tutorial >Wie kann ich mit PL/pgSQL mehrere Tabellenfelder als einen einzigen Datensatz in PostgreSQL zurückgeben?
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!