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

使用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语句中消除它们? 我想知道一个避免

我有一个类似于“”的SP


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//