2012-12-05 82 views
0

我想創建一個簡單的存儲過程,允許我進行批量插入,但是我遇到了語法問題,無法找出哪裏出了問題,儘管將我的過程語法與現有示例進行了比較,這似乎是正確的。MySQL存儲過程語法痛

CREATE PROCEDURE populateUserTable() 
BEGIN 
    DECLARE counter int(10); 
    SET counter = 1; 
WHILE counter < 101 DO 
    INSERT INTO user(userid) values(counter); 
    SET counter = counter + 1 
END WHILE; 
END 

一旦運行,MYSQL規定: 您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的 '' 在行3

和highlits這傢伙正確的語法手冊:

CREATE PROCEDURE populateUserTable()BEGIN DECLARE計數器INT(10);

這是怎麼回事?

+0

你是不是想從mysql命令行做到這一點?你改變了分隔符嗎? –

回答

1

你用

DELIMITER $$ 

在開始?

嘗試

DELIMITER $$ 
CREATE PROCEDURE populateUserTable() 
BEGIN 
    DECLARE counter int(10); 
    SET counter = 1; 
    WHILE counter < 101 DO 
     INSERT INTO user(userid) values(counter); 
     SET counter = counter + 1 
    END WHILE; 
END $$ 
DELIMITER ; 
+0

哈哈,它爲什麼重要的分隔符? –

+1

因爲它限定了存儲過程的構成。即'CREATE'和'END $$'之間的東西。你不想讓它在第一個';'結束 –