Eén manier:gebruik een record
variabele:
DO $$
DECLARE
_rec record;
BEGIN
SELECT INTO _rec
id, name, surname FROM t WHERE id = ?;
END $$;
Merk op dat de structuur van een record
type is ongedefinieerd totdat het wordt toegewezen. U kunt dus niet verwijzen naar kolommen (velden) voordat u dat doet.
Een andere manier:wijs meerdere scalaire variabelen toe:
DO $$
DECLARE
_id int;
_name text;
_surname text;
BEGIN
SELECT INTO _id, _name, _surname
id, name, surname FROM t WHERE id = ?;
END $$;
Wat betreft je eerste voorbeeld:%ROWTYPE
is gewoon lawaai in Postgres. De documentatie
:
Dus:
DO $$
DECLARE
my_data t; -- table name serves as type name, too.
BEGIN
SELECT INTO my_data * FROM t WHERE id = ?;
END $$;