postgresql — PL/pgSQL «для цикла» + выберите базовый пример («hello world»)
Задавать вопрос
спросил
Изменено 3 года, 8 месяцев назад
Просмотрено 5к раз
Я уже некоторое время использую Postgres, но я совершенно не знаком с PL/pgSQL.
Я изо всех сил пытаюсь заставить работать базовый цикл for .
Это прекрасно работает:
-- Без SELECT СДЕЛАТЬ $$ НАЧИНАТЬ ДЛЯ счетчика IN 1..6 BY 2 LOOP ПОДНЯТЬ УВЕДОМЛЕНИЕ 'Счетчик: %', counter; КОНЕЦ ПЕТЛИ; КОНЕЦ; $$;
Но на самом деле я хочу перебрать результат запроса SELECT
.
Я продолжаю сталкиваться с этой ошибкой:
Ошибка в запросе: ОШИБКА: переменная цикла цикла по строкам должна быть записью или строковой переменной или списком скалярных переменных
Звучит довольно непонятно для меня, и гугление не помогло.
Есть таблица из моих собственных данных, которую я хочу использовать (я надеялся использовать SELECT * FROM mytable WHERE ‹что угодно›
), но я понимаю, что не могу даже заставить цикл работать с более простые данные .
Возьмите это:
-- с SELECT СДЕЛАТЬ $$ НАЧИНАТЬ ПОДНЯТЬ УВЕДОМЛЕНИЕ 'Приготовьтесь удивляться…'; FOR target IN SELECT * FROM generate_series(1,2) LOOP ПОДНЯТЬ УВЕДОМЛЕНИЕ «привет» КОНЕЦ ПЕТЛИ; КОНЕЦ; $$
Это также вызывает указанную выше ошибку. Я хотел бы напечатать простую вещь, чтобы понять синтаксис цикла, например:
привет 1
привет 2
Что я делаю не так?
- postgresql
- plpgsql
1
Итератор должен быть объявлен
ДО $$ ЗАЯВИТЬ целевая запись; НАЧИНАТЬ ПОДНЯТЬ УВЕДОМЛЕНИЕ 'Приготовьтесь удивляться…'; FOR target IN SELECT * FROM generate_series(1,2) LOOP ПОДНЯТЬ УВЕДОМЛЕНИЕ 'привет'; КОНЕЦ ПЕТЛИ; КОНЕЦ; $$; ВНИМАНИЕ: будьте готовы удивляться… ВНИМАНИЕ: привет ВНИМАНИЕ: привет
2
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
postgresql — Как сделать цикл for в SQL с помощью Postgres?
Задавать вопрос
спросил
Изменено 4 года, 7 месяцев назад
Просмотрено 8к раз
У меня есть базовые знания Python, и мои знания SQL растут, но я никогда ничего не делал с циклами в SQL. Я хочу сделать цикл for в SQL, используя список, и сделать это в pgAdmin 4.
Итак, исходя из точки зрения Python, я хочу перевести Оператор «for l in list» в SQL.
Я уже много искал в Интернете, но я не могу найти учебник или руководство, которое шаг за шагом объясняет, как это работает и что делает каждое слово или часть в Заявлении.
Можете ли вы порекомендовать какой-либо веб-сайт, руководство, учебное пособие или даже книгу, подходящую для новичков в циклах SQL? Или может кто-нибудь объяснить это в комментарии к ответу здесь, если это не слишком сложно и долго?
Основываясь на моих исследованиях циклов в SQL, вот пример того, что я пытаюсь сделать:
CREATE TABLE draft AS Список FOR x IN [зеленый1, синий2, красный4] ПЕТЛЯ -- сделай то и это -- КОНЕЦ ПЕТЛИ;
- postgresql
- for-loop
- plpgsql
4
Вы можете сделать что-то подобное с PL/SQL, чтобы зациклить массив.