Une méthode :utilisez un enregistrement record
variables :
DO $$
DECLARE
_rec record;
BEGIN
SELECT INTO _rec
id, name, surname FROM t WHERE id = ?;
END $$;
Notez que la structure d'un record
le type est indéfini jusqu'à ce qu'il soit affecté. Vous ne pouvez donc pas référencer des colonnes (champs) avant de le faire.
Une autre façon :assigner plusieurs variables scalaires :
DO $$
DECLARE
_id int;
_name text;
_surname text;
BEGIN
SELECT INTO _id, _name, _surname
id, name, surname FROM t WHERE id = ?;
END $$;
Comme pour votre premier exemple :%ROWTYPE
est juste du bruit dans Postgres. La documentation
:
Donc :
DO $$
DECLARE
my_data t; -- table name serves as type name, too.
BEGIN
SELECT INTO my_data * FROM t WHERE id = ?;
END $$;