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

Deklarer rækketypevariabel i PL/pgSQL

Én måde:brug en record variabel:

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

Bemærk, at strukturen af ​​en record typen er udefineret, indtil den tildeles. Så du kan ikke referere til kolonner (felter), før du gør det.

En anden måde:tildel flere skalarvariabler:

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

Med hensyn til dit første eksempel:%ROWTYPE er bare støj 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. Implementering af cx_Oracle på forskellige versioner af Oracle Client

  2. Har PL/SQL en tilsvarende StringTokenizer til Java?

  3. Forkert datetime-værdi Databasefejlnummer:1292

  4. Tilslutning af Oracle ved hjælp af ODP.NET med Enterprise Library DAAB