Heim >Datenbank >MySQL-Tutorial >Wie kann ich mit PL/pgSQL mehrere Felder als einen einzigen Datensatz in PostgreSQL zurückgeben?
Mehrere Felder als Datensatz in PostgreSQL mit PL/pgSQL zurückgeben
In PL/pgSQL eine Funktion erstellen, die mehrere Felder aus verschiedenen zurückgibt Tabellen als einzelner Datensatz können über den RECORD-Typ erreicht werden. So geht's:
RECORD-Typ
Deklarieren Sie einen RECORD-Typ, der die Felder definiert, die Sie zurückgeben möchten. Zum Beispiel:
CREATE TYPE person AS ( name text, age integer, city text );
Abfragen verschiedener Tabellen
Verwenden Sie in Ihrer PL/pgSQL-Funktion Abfragen, um Felder aus verschiedenen Tabellen abzurufen. Wenn Sie beispielsweise Tabellen mit Benutzern, Adressen und Städten haben, können Sie Folgendes schreiben:
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;
Abfrageergebnisse speichern
Speichern Sie die Abfrageergebnisse in einer Datensatzvariablen . Mit dem RECORD-Typ können Sie auf Felder nach Spaltennamen zugreifen:
DECLARE result person; SELECT u.name, u.age, a.city INTO result;
Den Datensatz zurückgeben
Zum Schluss den Ergebnisdatensatz zurückgeben:
RETURN result;
Umgang mit unregelmäßigen Ergebnissen
Wenn Sie möglicherweise eine inkonsistente Anzahl von Zeilen abrufen Verwenden Sie für verschiedene Tabellen die Funktion „coalesce()“, um Fallback-Werte bereitzustellen:
SELECT coalesce(u.name, 'Unknown'), coalesce(u.age, 0), coalesce(a.city, 'N/A') INTO result;
Beispiel mit Unterabfrage
Wenn die Daten, die Sie zurückgeben müssen, als separate Zeilen gespeichert sind Verwenden Sie in einer einzelnen Tabelle eine Unterabfrage:
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;
Dieser Ansatz ermöglicht es Ihnen, die Zeilen in einen einzigen Datensatz zu „flachen“. Struktur.
Das obige ist der detaillierte Inhalt vonWie kann ich mit PL/pgSQL mehrere Felder als einen einzigen Datensatz in PostgreSQL zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!