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.
警告来自哪里?
答案 0 :(得分:0)
实际上an active bug in MariaDB来自MySQL 5.5。
在MySQL 5.6.3之前,如果生成警告或错误的语句导致调用条件处理程序,则处理程序可能无法清除诊断区域。这可能会导致未调用处理程序的外观。