DO
$do$
DECLARE
a integer[] := array[1,2,3];
i integer; -- int, not bigint
BEGIN
FOR i IN 1 .. array_upper(a, 1)
LOOP
RAISE NOTICE '%', a[i]; -- single quotes
END LOOP;
END
$do$;
Nebo jednodušší pomocí FOREACH
v PostgreSQL 9.1 nebo novějším:
FOREACH i IN ARRAY a
LOOP
RAISE NOTICE '%', i;
END LOOP;
Vícerozměrná pole viz:
- Opakovat dimenzi pole v plpgsql
Nicméně řešení založená na sadách s generate_series()
nebo unnest()
jsou často rychlejší než smyčkování přes velké sady. Základní příklady:
- PostgreSQL:Rozšíření tabulky frekvencí
- Vyberte každý měsíc mezi počátečním a koncovým datem
Další informace najdete ve značkách generation-series nebo unnest.