2012-10-20 157 views
1

我試圖在我的主機mysqladmin頁面上執行以下代碼。MySQL語法錯誤

CREATE PROCEDURE `follow`(IN in_follower INT(11), IN in_followee VARCHAR(45)) 
BEGIN 
INSERT INTO follower (follower_id, followee_id) VALUES (in_follower, (SELECT user_id FROM user WHERE username = in_followee)); 
END 

我得到的錯誤是:

#1064 - 你在你的SQL語法錯誤;檢查與您的MySQL服務器版本對應的手冊,在第3行使用正確的語法「'''

爲什麼在這裏發生此錯誤?當我在MySQL Workbench中使用該代碼時,它運行良好。

+0

你可能需要設置在中mysqladmin控制檯的備用'DELIMITER'。它是phpmyadmin還是別的?如何完成取決於客戶端。 MySQL命令行客戶端有一個命令'DELIMITER',phpmyadmin有一個輸入字段來設置,你的Web控制檯可能有不同的方法。 –

+0

確實是phpmyadmin – RichardG

+0

實際上,在這種情況下,您可以刪除'BEGIN'和'END',而不用擔心語句分隔符... – eggyal

回答

2

嘗試thisone,

DELIMITER $$ 
CREATE PROCEDURE `follow` 
(
    IN in_follower INT (11) , 
    IN in_followee VARCHAR(45) 
) 
BEGIN 
     INSERT INTO follower (follower_id , followee_id) 
     SELECT in_follower AS follower_id, user_id 
     FROM user 
     WHERE username = in_followee; 
END$$ 
DELIMITER ; 
+1

我試過了,得到了以下錯誤:#1064 - 你的SQL語法有錯誤;檢查對應於你的MySQL服務器版本的手冊正確的語法使用近1行 – RichardG

+1

'DELIMITER $$ CREATE PROCEDURE'follow' ( IN in_follower INT(11), ' 這不會在phpMyAdmin工作。它有自己的分隔符輸入字段,因爲'DELIMITER'作爲命令特定於MySQL命令行客戶端。 –

+0

嘗試刪除分隔符並查看它是否有效,@MichaelBerkowski讓我下載wamp以便我可以測試它:) –