Un modo:usa un record
variabile:
DO $$
DECLARE
_rec record;
BEGIN
SELECT INTO _rec
id, name, surname FROM t WHERE id = ?;
END $$;
Nota che la struttura di un record
il tipo è indefinito finché non viene assegnato. Quindi non puoi fare riferimento a colonne (campi) prima di farlo.
Un altro modo:assegnare più variabili scalari:
DO $$
DECLARE
_id int;
_name text;
_surname text;
BEGIN
SELECT INTO _id, _name, _surname
id, name, surname FROM t WHERE id = ?;
END $$;
Per quanto riguarda il tuo primo esempio:%ROWTYPE
è solo rumore in Postgres. La documentazione
:
Quindi:
DO $$
DECLARE
my_data t; -- table name serves as type name, too.
BEGIN
SELECT INTO my_data * FROM t WHERE id = ?;
END $$;