Eine Möglichkeit:Verwenden Sie einen record
Variable:
DO $$
DECLARE
_rec record;
BEGIN
SELECT INTO _rec
id, name, surname FROM t WHERE id = ?;
END $$;
Beachten Sie, dass die Struktur eines record
Typ ist undefiniert, bis er zugewiesen wird. Sie können also vorher nicht auf Spalten (Felder) verweisen.
Ein anderer Weg:Weisen Sie mehrere skalare Variablen zu:
DO $$
DECLARE
_id int;
_name text;
_surname text;
BEGIN
SELECT INTO _id, _name, _surname
id, name, surname FROM t WHERE id = ?;
END $$;
Wie für Ihr erstes Beispiel:%ROWTYPE
ist nur Rauschen in Postgres. Die Dokumentation
:
Also:
DO $$
DECLARE
my_data t; -- table name serves as type name, too.
BEGIN
SELECT INTO my_data * FROM t WHERE id = ?;
END $$;