Я уже некоторое время использую Postgres, но я совершенно новичок в PL / pgSQL.
Я изо всех сил пытаюсь заставить работать базовый цикл .
Это прекрасно работает:
-- Without SELECT
DO $$
BEGIN
FOR counter IN 1..6 BY 2 LOOP
RAISE NOTICE 'Counter: %', counter;
END LOOP;
END; $$;
Но я действительно хочу перебрать результат SELECT
запроса .
Я продолжаюЭта ошибка:
Ошибка в запросе: ОШИБКА: переменная цикла цикла над строками должна быть переменной записи или строки или списком скалярных переменных
Звучит довольно туманномне и поиск в Google не помог.
Есть таблица из моих собственных данных, которую я хочу использовать (я надеялся использовать SELECT * FROM mytable WHERE ‹whatever›
), но я понимаю, что не могу даже получить для цикла для работы с более простыми данными .
Примите это:
-- with a SELECT
DO $$
BEGIN
RAISE NOTICE 'Get ready to be amazed…';
FOR target IN SELECT * FROM generate_series(1,2) LOOP
RAISE NOTICE 'hello'
END LOOP;
END; $$
Это также генерирует ошибку, описанную выше.Я хотел бы напечатать простую вещь, чтобы получить представление о синтаксисе цикла, что-то вроде:
привет 1
привет 2
Что яделаешь неправильно?