2016-07-26 4 views
2

У меня есть таблица с идентификатором личности в качестве первичного ключа, который содержит идентификатор своего менеджера. Я хочу настроить цикл while, который отобразит все идентификаторы менеджеров этого человека, вплоть до вершины списка. Я построил цикл while, но он возвращает null. Что я делаю не так?mysql while loop return null

CREATE FUNCTION `whilefunction`() RETURNS varchar(255) 
BEGIN 
    declare l_loop varchar(25) default '123456'; 
    declare result varchar(255) default ''; 
    while l_loop is not null do 
     set result = result + (select managerid from table where personid = l_loop); 
     set l_loop = (select managerid from table where personid = l_loop); 
    end while; 
RETURN result; 
END 

ответ

0

Вы указали result как строку. Затем вы используете дополнение. Неудивительно, что ваш код не делает то, что вы ожидаете.

Возможно concat() является то, что вы хотите:

set result = concat_ws(',', result, (select managerid from table where personid = l_loop); 
+0

Я буду идти вперед и прямо сейчас FACEPALM сверхтвердых. Спасибо огромное! –