【发布时间】:2020-07-14 18:59:17
【问题描述】:
我有一个 sql 过程,它有这个游标声明语句
DECLARE cur1 CURSOR FOR SELECT count(value1), value1
FROM someDB.table1
INNER JOIN someDB.table2 ON table1.Id=table2.Id and
A_code = input_code1;
AND B_code = input_code2
GROUP BY value1
ORDER BY count(value1) desc
LIMIT 5;
OPEN cur1;
read_loop: LOOP
FETCh cur1 INTO value2,value1;
set value = CONCAT(value2,' ',value1);
select 'loop start';
select value;
-- for now, I'm just trying to print but here I'll have an insert statement
IF done THEN
LEAVE read_loop;
END IF;
select 语句确实可以完美地返回值,但是当我尝试在表中插入值时,它说 value1 不能为 null,当我刚刚运行 select 语句时该值不为 null 不确定为什么这个值在光标。有人可以帮助我在此缺少什么
【问题讨论】:
-
你必须声明变量或使用用户变量@value1
-
这里我没有提到,但是我已经声明了一切,我想我主要关心的是为什么选择语句没有在游标中设置值?
-
您必须添加完整的程序,我们还需要对其进行测试,您的表格和一些数据。或者尝试自己调试一下,添加一个会话变量,看看运行过程后你得到了什么数据你可以选择@a,看看你得到了什么。
-
酷,让我尝试使用 select @ 进行调试 :)
-
对你超级好
标签: mysql stored-procedures cursor