PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Déclarer une variable de type de ligne en PL/pgSQL

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 $$;