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$;
Ou plus simple avec FOREACH
dans PostgreSQL 9.1 ou version ultérieure :
FOREACH i IN ARRAY a
LOOP
RAISE NOTICE '%', i;
END LOOP;
Pour les tableaux multidimensionnels, voir :
- Boucle sur la dimension du tableau dans plpgsql
Cependant, les solutions basées sur des ensembles avec generate_series()
ou unnest()
sont souvent plus rapides que de boucler sur de grands ensembles. Exemples de base :
- PostgreSQL :extension de la table des fréquences
- Sélectionnez chaque mois entre une date de début et une date de fin
Recherchez les balises generate-series ou unnest pour en savoir plus.