2013-10-02 1 views
0

Я пытался создать базовый образец цикла. Не удалось найти то, что я сделал неправильно. Можете ли вы помочь:Ошибка синтаксиса в инструкции Postgres с процедурным кодом

BEGIN 
    FOR i_ IN 1..100 LOOP 
     INSERT INTO "MYSHM".aaa values (i_,i_ + 1 ,i_ + 2,i_ + 3); 
    END LOOP; 
END 

[ERROR] 2.0-2: синтаксис ошибка, неожиданный характер

+0

(http://stackoverflow.com/questions/19145761/postgres-for-loop) –

ответ

2

Процедурный код разрешается только внутри DO заявления или function body.
Использования процедурного языка PL/pgSQL по умолчанию (но есть many other options):

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;