Mysql 错误代码:1329。没有数据 - 提取、选择或处理的行为零

Mysql Error Code: 1329. No data - zero rows fetched, selected, or processed

所以我有一个存储过程,其功能是找出包含名称已过期或结束(日期时间类型)的列,然后找出包含距离现在 90 天的该列的记录。所以我做了这个存储过程

CREATE DEFINER=`fachry`@`%` PROCEDURE `get_data`()
BEGIN
DECLARE i VARCHAR(100);
DECLARE a VARCHAR(100); 
   DECLARE cur1 CURSOR FOR SELECT DISTINCT 
   TABLE_NAME, COLUMN_NAME FROM information_schema.columns WHERE (COLUMN_NAME LIKE 'End%' OR COLUMN_NAME LIKE 'Expired%') AND TABLE_SCHEMA='brambang_uom'
  AND TABLE_NAME NOT LIKE 'discount%' ;
   OPEN cur1;

   read_loop: LOOP
       FETCH cur1 INTO i,a;
    
       -- SELECT i,a; -- printing table name
    
       SET @s = CONCAT('select * from ', i, ' where ', a, ' >= CURDATE() + INTERVAL 90 DAY AND ' , a, ' <
       CURDATE() + INTERVAL 91 DAY'); 
        PREPARE stmt1 FROM @s;
        EXECUTE stmt1;
        DEALLOCATE PREPARE stmt1;

   END LOOP read_loop;

   CLOSE cur1;



END

但我不知道为什么它一直出错

Error Code: 1329. No data - zero rows fetched, selected or processed

您还没有声明处理程序 -

drop procedure if exists p;
delimiter $$
CREATE  PROCEDURE p()
BEGIN
DECLARE i VARCHAR(100);
DECLARE a VARCHAR(100); 
    declare finished int default 1;
   DECLARE cur1 CURSOR FOR 
   SELECT TABLE_NAME, COLUMN_NAME 
    FROM information_schema.columns 
    WHERE (COLUMN_NAME LIKE 'End%' OR COLUMN_NAME LIKE 'Expired%') 
            AND TABLE_SCHEMA='sandbox'
           AND TABLE_NAME NOT LIKE 'discount%' ;
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET FINISHED = 0;
    
    OPEN cur1;

   read_loop: LOOP
     IF FINISHED = 0 THEN
            LEAVE read_loop;
        END IF;
        
       FETCH cur1 INTO i,a;
    
       #SELECT i,a; -- printing table name
    
       SET @s = CONCAT('select * from ', i, ' where ', a, ' >= CURDATE() + INTERVAL 90 DAY AND ' , a, ' <
       CURDATE() + INTERVAL 91 DAY'); 
       PREPARE stmt1 FROM @s;
       EXECUTE stmt1;
       DEALLOCATE PREPARE stmt1;
       
       #select @s;

   END LOOP read_loop;

   CLOSE cur1;

END $$

delimiter ;