PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Declare variável de tipo de linha em PL/pgSQL


Uma maneira:use um registro record variável:
DO $$
DECLARE
   _rec record;
BEGIN
SELECT INTO _rec
            id, name, surname FROM t WHERE id = ?;
END $$;

Observe que a estrutura de um record tipo é indefinido até ser atribuído. Portanto, você não pode fazer referência a colunas (campos) antes de fazer isso.

Outra maneira:atribuir várias variáveis ​​escalares:
DO $$
DECLARE
   _id int;
   _name text;
   _surname text;
BEGIN
SELECT INTO _id, _name, _surname
             id,  name,  surname FROM t WHERE id = ?;
END $$;

Quanto ao seu primeiro exemplo:%ROWTYPE é apenas ruído no Postgres. A documentação :

Então:
DO $$
DECLARE
   my_data t;  -- table name serves as type name, too. 
BEGIN
   SELECT INTO my_data  * FROM t WHERE id = ?;
END $$;