У меня есть 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//
и это дает мульти-результаты. Кроме того, неудобно, если я получу все эти мульти-результаты (которые мне совсем не нужны), около 5 (параметр limit) для каждой из сотен тысяч записей в Soul, боюсь, что потребуется моя память (и все напрасно).
Кроме того, я заметил, что если я готовлюсь из пустой строки, она по-прежнему имеет несколько результатов ...
Хотя бы как избавиться от них в операторе execute?
И я хотел бы иметь рецепт, чтобы избежать ЛЮБОГО вывода из SP, для любого возможного утверждения
(У меня также есть много "update ..." и "select ... into" внутри, если они могут создавать мульти).
Tnx за любую помощь ...