Jeden sposób:użyj record
zmienna:
DO $$
DECLARE
_rec record;
BEGIN
SELECT INTO _rec
id, name, surname FROM t WHERE id = ?;
END $$;
Zauważ, że struktura record
typ jest niezdefiniowany do czasu przypisania. Nie możesz więc odwoływać się do kolumn (pól), zanim to zrobisz.
Inny sposób:przypisz wiele zmiennych skalarnych:
DO $$
DECLARE
_id int;
_name text;
_surname text;
BEGIN
SELECT INTO _id, _name, _surname
id, name, surname FROM t WHERE id = ?;
END $$;
Co do pierwszego przykładu:%ROWTYPE
to tylko hałas w Postgresie. Dokumentacja
:
A więc:
DO $$
DECLARE
my_data t; -- table name serves as type name, too.
BEGIN
SELECT INTO my_data * FROM t WHERE id = ?;
END $$;