arrays postgresql loops plpgsql postgresql-8.4

arrays - Iteración sobre entero[] en PL/pgSQL



postgresql loops (1)

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; RETURN TRUE; END

O pruebe el nuevo FOREACH en PostgreSQL 9.1 :

FOREACH i IN ARRAY a LOOP RAISE NOTICE ''%'', i; END LOOP;

Sin embargo, las soluciones basadas en conjuntos con generate_series() o unnest() suelen ser más rápidas que los bucles para grandes conjuntos.

Ejemplos básicos:

Busque en las etiquetas generate-series o unnest para obtener más información.

Estoy intentando recorrer un conjunto integer[] ( integer[] ) en una función plpgsql. Algo como esto:

declare a integer[] = array[1,2,3]; i bigint; begin for i in a loop raise notice "% ",i; end loop; return true; end

En mi caso de uso real, la matriz entera a se pasa como parámetro a la función. Me sale este error:

ERROR: syntax error at or near "$1" LINE 1: $1

¿Cómo recorrer la matriz correctamente?