sql >> Databasteknik >  >> RDS >> PostgreSQL

Deklarera radtypsvariabel i PL/pgSQL

Ett sätt:använd en record variabel:

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

Observera att strukturen för en record typ är odefinierad tills den tilldelas. Så du kan inte referera till kolumner (fält) innan du gör det.

Ett annat sätt:tilldela flera skalära variabler:

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

När det gäller ditt första exempel:%ROWTYPE är bara buller i Postgres. Dokumentationen :

Så:

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



  1. anslut med klausul i regex_substr

  2. Istället för LIKE och ~, varför bara SILKENAR fungerar när man gör regex-matchning med alternativ

  3. Finns det något som liknar en split()-metod i mySql?

  4. Hur tar man bort en del av strängen i mysql?