Limity typu RECORD

Z PostgreSQL
Skočit na navigaci Skočit na vyhledávání

V PL/pgSQL můžeme používat proměnné typu RECORD. Díky tomu můžeme zjednodušit kód, jelikož přesně nemusíme specifikovat cílový typ proměnné. Na druhou stranu typ RECORD je v Postgresu cizí element - celý typový systém je v rámci provedení jednoho SQL příkazu statický a striktně typový. Proto je přímý přístup k položkám tohoto typu implementovaný pouze v PL/pgSQL a to pouze pro jednu úroveň (aktuálně SQL nepodporuje dynamický přístup skrze název položky). Obejít se to dá přes typ jsonb:

postgres=# do $$
declare r1 record; r2 record;
begin
  select 10 as a, 20 as b into r1;
  select r1, 30 as c into r2;
  raise notice '%', (to_jsonb(r2))['r1']['a'];
end;
$$;