我有一个程序,我需要将变量的值设置为一个查询的结果。该查询返回多个值,Mysql抛出错误1242子查询返回多于1行。我需要将结果保存在类似数组的变量中,然后在其他过程中使用该变量作为参数。这是我的代码。
CREATE PROCEDURE getCodes()
BEGIN
@code=(SELECT codref FROM referee WHERE town='Malaga');
CALL getMatch(@code);
END;$$
答案 0 :(得分:0)
您需要使用CURSOR
进行迭代:
CREATE PROCEDURE getCodes ()
BEGIN
DECLARE code int;
DECLARE cur1 CURSOR FOR SELECT coderef FROM referee WHERE town='Malaga';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur1;
REPEAT
FETCH cur1 INTO code;
IF NOT done THEN
CALL getMatch(code);
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
END;
有关详细信息,请参阅MySQL manual。