gpt4 book ai didi

mysql - 使用 Execute 避免来自 SP 的 MySQL 多重结果

转载 作者:行者123 更新时间:2023-11-30 23:41:03 45 4
gpt4 key购买 nike

我有一个像这样的SP


BEGIN
DECLARE ...
CREATE TEMPORARY TABLE tmptbl_found (...);
PREPARE find FROM
      INSERT INTO tmptbl_found
(SELECT userid FROM
(
SELECT userid FROM Soul
WHERE
.?.?.
ORDER BY
.?.?.
) AS left_tbl
LEFT JOIN
Contact
ON userid = Contact.userid
WHERE Contact.userid IS NULL LIMIT ?)
”;

DECLARE iter CURSOR FOR SELECT userid, ... FROM Soul ...;
...
l:LOOP
FETCH iter INTO u_id, ...;
...
EXECUTE find USING ...,. . .,u_id,...;
...
END LOOP;
...
END//

它给出了多重结果。除了不方便之外,如果我得到所有这些多重结果(我真的根本不需要),Soul 中数十万条记录中的每条记录大约 5(限制参数),恐怕会占用所有我的内存(一切都是徒劳的)。另外,我注意到,如果我从一个空字符串开始准备,它仍然有多重结果......至少如何在执行语句中摆脱它们?我想有一个方法来避免 SP 的任何输出,对于任何可能的陈述(我也有很多“更新...”和“选择...进入”内部,如果它们可以产生多个的话)。Tnx 寻求任何帮助...

最佳答案

嗯。我只是说它已经出来了,没有真正的问题。我没有认真调查,但看起来服务器实际上并没有尝试执行语句(“call Proc();”)来查看是否会返回任何结果 - 它只是查看代码并假设将有多个结果集,需要连接能够处理它们。但是在我当时使用的 PhpMyAdmin 中,它不是。然而,从 MySQL 命令行客户端发出相同的命令就成功了——没有提示给定的连接上下文,也没有 multis,因为它们不必在那里——这只是 MySQL 的估计。我不必从错误中得出结论,像这样的 SP 肯定会在 MySQL 中返回 multis,刷新所有中间获取的数据,我需要以某种方式抑制这些数据。

可能不是我想象的那样,但是现在问题已经解决了。

关于mysql - 使用 Execute 避免来自 SP 的 MySQL 多重结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3027685/

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