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, чтобы зациклить массив.