Как обойти массив в PostgreSQL при помощи цикла FOREACH?
Через команду DO мы имитируем работу функции, в которой описан простейший цикл по массиву:
-- Цикл по массиву DO $$ DECLARE -- Исходный массив arr text[] := '{Лена,Маша,Ян,Петя,Вася}'; -- Переменная для хранения одного элемента массива при обходе циклом x text; BEGIN -- Цикл FOREACH x IN ARRAY arr LOOP -- Здесь "x" содержит один элемент массива -- на каждую новую итерацию цикла RAISE NOTICE 'x = %', x; END LOOP; END; $$
Мы объявляем две переменные.
В переменной «arr» находится массив с типом данных «text«.
В переменную «x» будут перезаписываться текущие элементы массива с типом данных «text» на каждой итерации цикла.
Для визуализации работы простого цикла мы будем использовать команду RAISE NOTICE. На каждой итерации цикла мы будем в консоль выводить текущее значение в переменной «x«.
Результат консольных выводов будет такой:

Информационные ссылки
Официальный сайт WEB-оболочки pgAdmin — https://www.pgadmin.org
Официальный сайт СУБД PostgreSQL — https://www.postgresql.org
Команды SQL — https://postgrespro.ru/docs/postgresql/15/sql-commands
Цикл по элементам массива — https://postgrespro.ru/docs/postgresql/15/plpgsql-control-structures#PLPGSQL-FOREACH-ARRAY