Един начин:използвайте record
променлива:
DO $$
DECLARE
_rec record;
BEGIN
SELECT INTO _rec
id, name, surname FROM t WHERE id = ?;
END $$;
Обърнете внимание, че структурата на record
типът е недефиниран, докато не бъде присвоен. Така че не можете да препращате към колони (полета), преди да направите това.
Друг начин:присвояване на множество скаларни променливи:
DO $$
DECLARE
_id int;
_name text;
_surname text;
BEGIN
SELECT INTO _id, _name, _surname
id, name, surname FROM t WHERE id = ?;
END $$;
Що се отнася до първия ви пример:%ROWTYPE
е просто шум в Postgres. Документацията
:
И така:
DO $$
DECLARE
my_data t; -- table name serves as type name, too.
BEGIN
SELECT INTO my_data * FROM t WHERE id = ?;
END $$;