Una forma:use un registro record
variables:
DO $$
DECLARE
_rec record;
BEGIN
SELECT INTO _rec
id, name, surname FROM t WHERE id = ?;
END $$;
Tenga en cuenta que la estructura de un record
el tipo no está definido hasta que se asigna. Por lo tanto, no puede hacer referencia a columnas (campos) antes de hacerlo.
Otra forma:asigna múltiples variables escalares:
DO $$
DECLARE
_id int;
_name text;
_surname text;
BEGIN
SELECT INTO _id, _name, _surname
id, name, surname FROM t WHERE id = ?;
END $$;
En cuanto a su primer ejemplo:%ROWTYPE
es solo ruido en Postgres. La documentación
:
Entonces:
DO $$
DECLARE
my_data t; -- table name serves as type name, too.
BEGIN
SELECT INTO my_data * FROM t WHERE id = ?;
END $$;