Ответ 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
Или попробуйте новый FOREACH
в PostgreSQL 9.1:
FOREACH i IN ARRAY a
LOOP
RAISE NOTICE '%', i;
END LOOP;
Однако решения на основе набора с generate_series()
или unnest()
часто быстрее, чем цикл для больших наборов.
Основные примеры:
Поиск тегов generate-series или unnest для более.