Sql

Loop for postgresql: postgresql — Postgres FOR LOOP

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *