gpt4 book ai didi

mysql - 仅当存储过程运行两次时,它才会返回完整的结果集

转载 作者:行者123 更新时间:2023-11-29 15:16:02 32 4
gpt4 key购买 nike

我执行以下存储过程来获取特定文件夹 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

我很困惑为什么会发生这种情况。有人有想法吗?

最佳答案

很可能在第一次和第二次运行之前,@idlist 的值是不同的。为什么不尝试创建一个没有 @idlist 的过程或确保它已初始化?

关于mysql - 仅当存储过程运行两次时,它才会返回完整的结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59695412/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com