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$;
Eller enklere med FOREACH
i PostgreSQL 9.1 eller nyere:
FOREACH i IN ARRAY a
LOOP
RAISE NOTICE '%', i;
END LOOP;
For multidimensionelle arrays se:
- Loop over matrixdimension i plpgsql
Dog sæt-baserede løsninger med generate_series()
eller unnest()
er ofte hurtigere end at sløjfe over store sæt. Grundlæggende eksempler:
- PostgreSQL:Udvidelse af frekvenstabel
- Vælg hver måned mellem en start- og slutdato
Søg i tags generere-serier eller unnest for mere.