mysql select into记录为空,导致变量不变的问题

CREATE DEFINER=`aaa`@`%` FUNCTION `queryChildAllParentInfo`(chldMember_Id VARCHAR(32)) RETURNS longtext CHARSET utf8     DETERMINISTIC BEGIN /* @author:shitianaaa @date:201908...

CREATE DEFINER=`aaa`@`%` FUNCTION `queryChildAllParentInfo`(chldMember_Id VARCHAR(32)) RETURNS longtext CHARSET utf8

    DETERMINISTIC

BEGIN

/*

@author:shitianaaa

@date:20190810

@descrition:

该函数传入一个用户member_id ,递归它所有的上级,直到根节点,然后把所有的父级member_id 做为一个列表(逗号分隔)的方式返回

函数调用方式:select mddb.queryChildAllParentInfo('8851f660fc5611e8a69cb5a96a9953ea') from dual;

调用该函数返回以'8851f660fc5611e8a69cb5a96a9953ea' 为起始的所有父级节点

*/

DECLARE sTemp LONGTEXT;

DECLARE sTempChd VARCHAR(32);

 SET sTemp='$';

SET sTempChd = CAST(chldMember_Id AS CHAR);

SET sTemp = CONCAT(sTemp,',',sTempChd);

 set sTempChd := (select parent_id FROM md_member_distribution WHERE member_id = sTempChd);

WHILE (sTempChd is not null || sTempChd !='')  DO

 IF (sTempChd is not null || sTempChd !='') THEN

SET sTemp = CONCAT(sTemp,',',ifnull(sTempChd,''));

END IF;

 -- SELECT parent_id INTO sTempChd FROM md_member_distribution WHERE member_id = sTempChd;

 set sTempChd := (select parent_id FROM md_member_distribution WHERE member_id = sTempChd);

END WHILE;

RETURN sTemp;

END


其中SELECT parent_id INTO sTempChd FROM md_member_distribution WHERE member_id = sTempChd; 如果parent_id 为空,则

sTempChd 值是不会改变的,导致,while 陷入死循环,这种原因官网解释如下:对于循环作为退出条件而言,使用select into要小心

最好使用

 set sTempChd := (select parent_id FROM md_member_distribution WHERE member_id = sTempChd);

 来替代。

select ... into @var 语句中,如果查询返回记录是空,那么变量将不会被改变。

       

       官网文档表述:

The selected values are assigned to the variables. The number of variables must match the number of columns. The query should return a single row. If the query returns no rows, a warning with error code 1329 occurs (No data), and the variable values remain unchanged. 



PS:mysql存储过程中 声明decimal,不能使用大写,如果使用DECIMAL(10,2) 会报错            DECLARE bounesAmt25 decimal(10,2) DEFAULT 25.00;


  • 发表于 2019-08-15 19:40
  • 阅读 ( 46 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
shitian
shitian

662 篇文章

作家榜 »

  1. shitian 662 文章
  2. 石天 437 文章
  3. 每天惠23 33 文章
  4. 小A 29 文章