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$;
Oder einfacher mit FOREACH
in PostgreSQL 9.1 oder höher:
FOREACH i IN ARRAY a
LOOP
RAISE NOTICE '%', i;
END LOOP;
Für mehrdimensionale Arrays siehe:
- Array-Dimension in plpgsql durchlaufen
Set-basierte Lösungen jedoch mit generate_series()
oder unnest()
sind oft schneller als das Schleifen über große Sets. Grundlegende Beispiele:
- PostgreSQL:Häufigkeitstabellenerweiterung
- Wählen Sie jeden Monat zwischen einem Start- und Enddatum aus
Durchsuchen Sie die Tags generate-series oder unsest nach mehr.