Limity typu RECORD

Z PostgreSQL
Verze z 16. 11. 2021, 10:30, kterou vytvořil PavelStehule (diskuse | příspěvky) (založena nová stránka s textem „V PL/pgSQL můžeme používat proměnné typu <code>RECORD</code>. Díky tomu můžeme zjednodušit kód, jelikož přesně nemusíme specifikovat cílov…“)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
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;
$$;