sql >> Database >  >> RDS >> PostgreSQL

Variabele rijtype declareren in PL/pgSQL

Eén manier:gebruik een record variabele:

DO $$
DECLARE
   _rec record;
BEGIN
SELECT INTO _rec
            id, name, surname FROM t WHERE id = ?;
END $$;

Merk op dat de structuur van een record type is ongedefinieerd totdat het wordt toegewezen. U kunt dus niet verwijzen naar kolommen (velden) voordat u dat doet.

Een andere manier:wijs meerdere scalaire variabelen toe:

DO $$
DECLARE
   _id int;
   _name text;
   _surname text;
BEGIN
SELECT INTO _id, _name, _surname
             id,  name,  surname FROM t WHERE id = ?;
END $$;

Wat betreft je eerste voorbeeld:%ROWTYPE is gewoon lawaai in Postgres. De documentatie :

Dus:

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



  1. Hoe parameters te vinden in Oracle-query's ontvangen van v$sql?

  2. Scala Slick:MTable.getTables retourneert lege vector/lijst

  3. Fout:upstream voortijdig gesloten verbinding tijdens het lezen van responsheader van upstream [uWSGI/Django/NGINX]

  4. treinserver fout? (rails 3) in ramen