这个“无数据”警告来自哪里? (游标循环)

时间:2013-06-28 04:57:55

标签: mysql sql mariadb

CREATE TABLE INPUT ( NUM INT );
INSERT INTO INPUT VALUES (1);
CREATE TABLE OUTPUT ( NUM INT );

DELIMITER //

CREATE PROCEDURE TEST_LOOP()
BEGIN
  DECLARE NUMBER INT;

  DECLARE DONE TINYINT DEFAULT 0;
  DECLARE REC CURSOR FOR SELECT NUM FROM INPUT;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = 1;

  DELETE FROM OUTPUT;

  OPEN REC;
    L: LOOP
      FETCH REC INTO NUMBER;
      IF DONE = 1 THEN
        LEAVE L;
      END IF;

      INSERT INTO OUTPUT VALUES (NUMBER);
    END LOOP;
  CLOSE REC;
END //

DELIMITER ;

然后我运行CALL TEST_LOOP();,程序按预期运行(OUTPUT表中的一条记录),但会产生一个警告:

No data - zero rows fetched, selected, or processed.

警告来自哪里?

1 个答案:

答案 0 :(得分:0)

实际上an active bug in MariaDB来自MySQL 5.5。

来自MySQL 5.5 manual;

  

在MySQL 5.6.3之前,如果生成警告或错误的语句导致调用条件处理程序,则处理程序可能无法清除诊断区域。这可能会导致未调用处理程序的外观。