2010-07-15 107 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 ; 

延伸阅读: