2010-07-15 77 views
2

我是一個具有存儲過程的新手。以下是生成語法錯誤。存儲過程語法錯誤

「你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本在3線附近使用‘’正確的語法手冊」

CREATE PROCEDURE get_user_association_list (IN uid INT) 
BEGIN 
DECLARE rolelist VARCHAR(255); 
DECLARE role_id INT; 
DECLARE cur1 CURSOR FOR SELECT assoc_type_id FROM cause_users_assoc WHERE user_id = uid; 
OPEN cur1; 
REPEAT 
FETCH cur1 INTO role_id; 
SET rolelist = CONCAT(rolelist, role_id); 
SET rolelist = CONCAT(rolelist, ','); 
UNTIL done END REPEAT; 
CLOSE cur1; 
RETURN rolelist; 
END; 

請幫助。

回答

2

看起來您需要使用DELIMITER命令將語句分隔符從;更改爲其他過程定義過程中的其他內容。這使得在過程體中使用的;分隔符能夠被傳遞到服務器,而不是被MySQL本身解釋。

因此,你可能想嘗試以下操作:

DELIMITER $$ 

CREATE PROCEDURE get_user_association_list (IN uid INT) 
BEGIN 

-- // Your stored procedure body, using semicolon delimiters 

END $$ 

DELIMITER ; 

延伸閱讀: