关于mysql存储过程递归查询 报错1406 - Data too long for column '' at row

最近要做一个查询 通过递归实现查询到某一个id下面的所有子数据

表结构如下

图片说明图片说明

存储过程代码如下

BEGIN
DECLARE sTemp VARCHAR(4000);
DECLARE sTempChd VARCHAR(4000);

SET sTemp='$';
SET sTempChd = CAST(areaId AS CHAR);

WHILE sTempChd IS NOT NULL DO
SET sTemp= CONCAT(sTemp,',',sTempChd);
SELECT GROUP_CONCAT(CITYID) INTO sTempChd FROM SYSTEM_AREA_CITY WHERE FIND_IN_SET(PARENTID,sTempChd)>0;
END WHILE;
RETURN sTemp;
END

下面是调用存储过程后报错的提示

Procedure execution failed
1406 - Data too long for column 'sTemp' at row 7

weixin_45807898
weixin_45807898 我也遇到了同样的问题
8 个月之前 回复

3个回答

在mysql的命令行界面执行

SET @@global.sql_mode='';
ququjingjing
jingjingtong 字段值长度不够,增加字段长度就可以了
一年多之前 回复
CatFood3
CatFood3 输入了 出现了个Query OK, 0 rows affected 但存储过程还是用不了
一年多之前 回复

DECLARE sTemp text;
DECLARE sTempChd text;

你这个需要传参,为什么不用函数?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐