PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Dichiara la variabile del tipo di riga in PL/pgSQL

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