2013-10-02 90 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 

[錯誤] 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;