将多个结果分配给mysql变量

时间:2014-04-17 08:43:40

标签: mysql stored-procedures

我有一个程序,我需要将变量的值设置为一个查询的结果。该查询返回多个值,Mysql抛出错误1242子查询返回多于1行。我需要将结果保存在类似数组的变量中,然后在其他过程中使用该变量作为参数。这是我的代码。

CREATE PROCEDURE getCodes()
    BEGIN
        @code=(SELECT codref FROM referee WHERE town='Malaga');
        CALL getMatch(@code);
    END;$$

1 个答案:

答案 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