mysql 变量赋值要注意的

今天由于项目需要,需要写个存储过程,这个可是一年才难得写一次。于是没办法,重新捡起来。开始写
写到后来。。
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函数最好只用在字符串字段上

猜你喜欢

转载自lyp721-yeah-net.iteye.com/blog/1926145