带游标的MySQL存储过程

带游标的MySQL存储过程,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,从表“redis state”中,我想用游标在表中获取数据,并编写了这个过程,但我得到了一个错误 声明未找到1064错误代码 在第10行 目的是打印表格的所有行。表中的每个条目打印一次 [![在此处输入图像描述][2][2] CREATE PROCEDURE redisatestatedata() BEGIN DECLARE macaddress varchar(50); DECLARE redisstate varchar(50); DECLA

从表“redis state”中,我想用游标在表中获取数据,并编写了这个过程,但我得到了一个错误

声明未找到1064错误代码

在第10行

目的是打印表格的所有行。表中的每个条目打印一次

[![在此处输入图像描述][2][2]

    CREATE PROCEDURE redisatestatedata()
    BEGIN 
     DECLARE macaddress varchar(50);
     DECLARE redisstate varchar(50);
     DECLARE atehistorystate varchar(50);
     DECLARE data_list varchar(50000);
     DECLARE done INT DEFAULT FALSE;

     DECLARE data_cursor CURSOR FOR  
      SELECT macaddress,redisstate,atehistorystate 
      FROM redis-atestate;

       DECLARE CONTINUE HANDLER FOR NOT FOUND
         SET done = TRUE;
         open data_cursor;
     GET_DATA:loop FETCH data_cursor INTO 
          macaddress,redisstate,atehistorystate;

     IF v_finished = 1 THEN 
        leave get_data;
     ENDIF;

 SET data_list = concat("Difference in state ATE:",macaddress,": redis ",redisstate,": dbstate ",atehistorystate);

    SELECT data_list;
   loop get_data;
  CLOSE data_cursor;
END;

我认为问题在于这一说法:

DECLARE done INT DEFAULT FALSE;

您试图将默认值false分配给数据类型INT?

很抱歉,我尝试添加有问题的代码,但没有成功,因此粘贴的图像您可以通过复制和粘贴来添加代码,然后选择它并按
ctrl+k
(或编辑框上方的
{}
符号)。另外,请添加准确(完整)的错误消息,包括引用代码的部分,因为它将直接显示错误的位置。这(错误消息和代码为文本)使我们能够更快地识别语法问题,如不带引号的表名。