sql >> Base de Datos >  >> RDS >> PostgreSQL

Declarar variable de tipo de fila en PL/pgSQL

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