mysql - 存储过程语法错误

标签 mysql stored-procedures cursors

我是一个公认的存储过程新手。以下是生成语法错误。

“您的 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;

请帮忙。

最佳答案

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

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

DELIMITER $$

CREATE PROCEDURE get_user_association_list (IN uid INT)
BEGIN

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

END $$

DELIMITER ;

进一步阅读:

关于mysql - 存储过程语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3251871/

相关文章:

postgresql - 将一条记录从游标发送到另一个函数Postgres

sql-server - sql错误处理和输出

MySQL:这个 CREATE PROCEDURE 语句有什么问题?

加载表单时 C# WaitCursor

mysql - SQL 内连接与 max 函数按组

python - python pymysql.cursors如何从mysql存储过程获取INPUT返回结果

python - python/arcpy SQL 表达式中的循环无效,选择不起作用

javascript - 使用原始 Sequelize 查询 : avoiding single quotes? 的替换

mysql - 根据子查询中的计数显示表结果

mysql - 查询 |处理多个具有潜在空值的 where 条件