Синтаксическая ошибка в выражении Postgres с процедурным кодом
Я пытался сделать базовый для образца цикла. Не могу найти то, что я сделал не так. Можете ли вы помочь, пожалуйста:
BEGIN
FOR i_ IN 1..100 LOOP
INSERT INTO "MYSHM".aaa values (i_,i_ + 1 ,i_ + 2,i_ + 3);
END LOOP;
END
[ОШИБКА] 2.0-2: синтаксическая ошибка, неожиданный символ
1 ответ
Решение
Процедурный код допускается только внутри DO
оператор или тело функции.
Используя процедурный язык по умолчанию PL / pgSQL (но есть много других вариантов):
DO
$do$
BEGIN
FOR i IN 1..100 LOOP
INSERT INTO "MYSHM".aaa -- column definition list ?!
VALUES (i, i + 1, i + 2, i + 3);
END LOOP;
END
$do$;
Или лучше переписать вашу проблему как основанную на множестве операцию с generate_series()
:
INSERT INTO "MYSHM".aaa -- column definition list ?!
SELECT i, i + 1, i + 2, i + 3
FROM generate_series(1,100) i;