首页 > 解决方案 > 带有游标的 MySQL 存储过程

问题描述

从表“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;

标签: mysqlsqlstored-procedures

解决方案


我认为问题在于这个声明:

DECLARE done INT DEFAULT FALSE;

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


推荐阅读