CREATE FUNCTION `getChildLstnotSun`(department_id int)
RETURNS varchar(1000)
BEGIN
DECLARE sTemp VARCHAR(1000);
DECLARE sTempChd int;
declare fetchSeqOk boolean;
declare cur1 CURSOR FOR SELECT departmentId FROM sys_department_info where fatherDepartmentId=department_id;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET fetchSeqOk=true;
SET fetchSeqOk=false;
OPEN cur1;
fetchSeqLoop:Loop
FETCH cur1 INTO sTempChd;
if fetchSeqOk then
leave fetchSeqLoop;
else
SET sTemp := concat(sTemp,',',sTempChd);
end if;
end loop;
CLOSE cur1;
RETURN sTemp;
END
需要有个类似于for循环字符串拼接的代码
OPEN cur1;
fetchSeqLoop:Loop
FETCH cur1 INTO sTempChd;
if fetchSeqOk then
leave fetchSeqLoop;
else
SET sTemp := concat(sTemp,',',sTempChd);
end if;
end loop;
CLOSE cur1;
结果调试了半天,这个sTemp变量就是不出来.
最后开始奇思妙想。
结果在SET fetchSeqOk=false;后面加上了 set sTemp='';
这时候才出来了。尼玛,原来这个是需要初始化一下的
顺便记一下,mysql的group_concat函数最好只用在字符串字段上
分享到:
2013-08-16 15:44
浏览 1020
分类:数据库
评论