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$;
O più semplice con FOREACH
in PostgreSQL 9.1 o successivo:
FOREACH i IN ARRAY a
LOOP
RAISE NOTICE '%', i;
END LOOP;
Per gli array multidimensionali vedere:
- Cicla sulla dimensione dell'array in plpgsql
Tuttavia, soluzioni basate su insiemi con generate_series()
o unnest()
sono spesso più veloci del looping su grandi set. Esempi di base:
- PostgreSQL:espansione della tabella delle frequenze
- Seleziona ogni mese tra una data di inizio e di fine
Cerca i tag generate-series o unnest per altri.