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$;
Of eenvoudiger met FOREACH
in PostgreSQL 9.1 of hoger:
FOREACH i IN ARRAY a
LOOP
RAISE NOTICE '%', i;
END LOOP;
Zie voor meerdimensionale arrays:
- Loop over array-dimensie in plpgsql
Echter, set-gebaseerde oplossingen met generate_series()
of unnest()
zijn vaak sneller dan het doorlopen van grote sets. Basisvoorbeelden:
- PostgreSQL:Uitbreiding frequentietabel
- Selecteer elke maand tussen een begin- en einddatum
Zoek in de tags Genereer-serie of Unnes voor meer.