PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zadeklaruj zmienną typu wiersza w PL/pgSQL

Jeden sposób:użyj record zmienna:

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

Zauważ, że struktura record typ jest niezdefiniowany do czasu przypisania. Nie możesz więc odwoływać się do kolumn (pól), zanim to zrobisz.

Inny sposób:przypisz wiele zmiennych skalarnych:

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

Co do pierwszego przykładu:%ROWTYPE to tylko hałas w Postgresie. Dokumentacja :

A więc:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Indeks tworzenia PostgreSQL

  2. Jak zwrócić dynamiczną liczbę kolumn w funkcji?

  3. Nie można określić typu polimorficznego, ponieważ dane wejściowe mają nieznany typ

  4. Postgresql - wydajność korzystania z tablicy w dużej bazie danych

  5. Powolne indeksowanie stołu Postgis o pojemności 300 GB