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 más simple con FOREACH
en PostgreSQL 9.1 o posterior:
FOREACH i IN ARRAY a
LOOP
RAISE NOTICE '%', i;
END LOOP;
Para matrices multidimensionales, consulte:
- Recorra la dimensión de la matriz en plpgsql
Sin embargo, las soluciones basadas en conjuntos con generate_series()
o unnest()
a menudo son más rápidos que recorrer conjuntos grandes. Ejemplos básicos:
- PostgreSQL:expansión de la tabla de frecuencias
- Seleccione cada mes entre una fecha de inicio y finalización
Busque las etiquetas de generar series o anular para obtener más.