Ошибка синтаксиса хранимой процедуры - PullRequest
2 голосов
/ 15 июля 2010

Я признанный новичок с хранимыми процедурами. Следующее генерирует синтаксическую ошибку.

"У вас есть ошибка в синтаксисе 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;

Помогите пожалуйста.

1 Ответ

2 голосов
/ 15 июля 2010

Похоже, вам нужно использовать команду DELIMITER, чтобы изменить разделитель операторов с ; на что-то другое, пока определяется процедура. Это позволяет разделителю ;, используемому в теле процедуры, передаваться на сервер, а не интерпретироваться самим MySQL.

Поэтому вы можете попробовать следующее:

DELIMITER $$

CREATE PROCEDURE get_user_association_list (IN uid INT)
BEGIN

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

END $$

DELIMITER ;

Дополнительная литература:

...