如何在MySQL中将变量设置为循环?

时间:2014-12-26 01:44:07

标签: mysql

根据这个答案Call a stored procedure for each row returned by a query in MySQL描述如下:

CREATE PROCEDURE foo() BEGIN
  DECLARE done BOOLEAN DEFAULT FALSE;
  DECLARE _id BIGINT UNSIGNED;
  DECLARE cur CURSOR FOR SELECT id FROM objects WHERE ...;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;

  OPEN cur;

  testLoop: LOOP
    FETCH cur INTO _id;
    IF done THEN
      LEAVE testLoop;
    END IF;
    CALL testProc(_id);
  END LOOP testLoop;

  CLOSE cur;
END

如何设置变量并在每次迭代中递增? 以下代码不起作用,我不知道为什么。

CREATE PROCEDURE foo() BEGIN
      DECLARE done BOOLEAN DEFAULT FALSE;
      DECLARE _id BIGINT UNSIGNED;
      DECLARE counter INT DEFAULT 0;
      DECLARE cur CURSOR FOR SELECT id FROM objects WHERE ...;
      DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;

      OPEN cur;

      testLoop: LOOP
        FETCH cur INTO _id;
        IF done THEN
          LEAVE testLoop;
        END IF;
        CALL testProc(_id);

        counter = counter + 1;

      END LOOP testLoop;

      CLOSE cur;
    END

0 个答案:

没有答案