带有游标的 MySQL 存储过程
Posted
技术标签:
【中文标题】带有游标的 MySQL 存储过程【英文标题】:MySQL stored procedure with a cursor 【发布时间】:2019-04-23 15:19:22 【问题描述】:我想从表“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;
【问题讨论】:
对不起,我尝试添加有问题的代码但没有成功,所以粘贴图像 您可以通过复制粘贴的方式添加您的代码,然后选择它并按ctrl+k
(或编辑框上方的
符号)。还请添加准确(和完整)的错误消息,包括引用您的代码的部分,因为它将直接显示错误的位置。这(错误消息和代码作为文本)使我们能够更快地识别语法问题,例如未引用的表名。
【参考方案1】:
我认为问题在于这句话:
DECLARE done INT DEFAULT FALSE;
您正在尝试将默认值 false 分配给数据类型 INT?
【讨论】:
以上是关于带有游标的 MySQL 存储过程的主要内容,如果未能解决你的问题,请参考以下文章