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;

请帮忙。

4

1 回答 1

2

在定义过程时,您似乎需要使用DELIMITER命令将语句分隔符更改;为其他内容。这使得;过程主体中使用的分隔符能够传递到服务器,而不是由 MySQL 本身解释。

因此,您可能想尝试以下方法:

DELIMITER $$

CREATE PROCEDURE get_user_association_list (IN uid INT)
BEGIN

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

END $$

DELIMITER ;

进一步阅读:

于 2010-07-15T01:37:02.200 回答