Только когда хранимая процедура запускается дважды, она возвращает полный набор результатов - PullRequest
0 голосов
/ 11 января 2020

Я выполняю следующую хранимую процедуру, чтобы получить потомков указанного c folder id.

CREATE PROCEDURE `SP_get_folder_structure`(
    I_folder_id VARCHAR(100),
    I_user_id INT,
    I_sys_id INT
)
BEGIN

    SELECT id, parent_id, root, name, quotum, owner, fullpath, createdon, editedon FROM
        (SELECT id, parent_id, root, name, quotum, owner, fullpath, createdon, editedon,
                CASE WHEN id = I_folder_id THEN @idlist := CONCAT(id)
                     WHEN FIND_IN_SET(parent_id,@idlist) THEN @idlist := CONCAT(@idlist,',',id)
                END as checkId
         FROM folders WHERE sys_id = I_sys_id) as T 
    WHERE checkId IS NOT NULL 
    ORDER BY id = I_folder_id DESC, parent_id ASC, name ASC LIMIT 100;
END

Когда я выполняю этот код на MySQL Workbench, его возвращает только полный набор результатов после выполнения запроса дважды, в первый раз он возвращает только одну строку: full result set

Я озадачен, почему это происходит. У кого-нибудь есть идея?

1 Ответ

0 голосов
/ 11 января 2020

Скорее всего, значение @idlist отличается до первого и второго запуска. Почему бы не попытаться создать процедуру без @idlist или убедиться, что она инициализирована?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...