使用Execute避免来自SP的MySQL多结果
我有一个类似于“”的SP使用Execute避免来自SP的MySQL多结果,mysql,stored-procedures,prepared-statement,multiple-resultsets,Mysql,Stored Procedures,Prepared Statement,Multiple Resultsets,我有一个类似于“”的SP BEGIN DECLARE ... CREATE TEMPORARY TABLE tmptbl_found (...); PREPARE find FROM 它给出了多个结果。除此之外,这很不方便,如果我得到所有这些多重结果(我真的根本不需要),灵魂中数十万条记录中的每一条都有5条(极限参数),我担心这会占用我所有的记忆(而且都是徒劳的)。 另外,我注意到,如果我从一个空字符串进行准备,它仍然有多个结果。。。 至少如何在execute语句中消除它们? 我想知道一个避免
BEGIN
DECLARE ...
CREATE TEMPORARY TABLE tmptbl_found (...);
PREPARE find FROM
它给出了多个结果。除此之外,这很不方便,如果我得到所有这些多重结果(我真的根本不需要),灵魂中数十万条记录中的每一条都有5条(极限参数),我担心这会占用我所有的记忆(而且都是徒劳的)。
另外,我注意到,如果我从一个空字符串进行准备,它仍然有多个结果。。。
至少如何在execute语句中消除它们?
我想知道一个避免SP输出任何可能语句的方法
(我也有很多“更新…”和“选择…进入”的内部,如果他们可以产生多的)。
Tnx需要任何帮助…好吧。我要说的是,事实证明这并不是一个真正的问题。我没有仔细研究,但看起来服务器实际上并没有试图执行语句(“call Proc();”),以查看是否会返回任何结果——它只是查看了代码并假设会有多个结果集,需要连接才能处理它们。但在我当时使用的PhpMyAdmin中,情况并非如此。然而,从MySQL命令行客户端发出相同的命令就成功了——没有抱怨给定的连接上下文,也没有multi,因为它们不必存在——这只是MySQL的估计。我不必从错误中得出结论,像这样的SP肯定会在MySQL中返回multis,刷新所有中间获取的数据,我需要以某种方式抑制这些数据 可能不像我想象的那样,但问题已经解决了
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//