PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Itération sur entier[] en PL/pgSQL

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.