【发布时间】:2010-06-12 05:57:54
【问题描述】:
我有一个像这样的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 寻求帮助...
【问题讨论】:
标签: mysql stored-procedures prepared-statement multiple-resultsets