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



所以我有一个存储过程,其中的函数是找出包含过期或结束名称(Datetime类型(的列,然后找出该列的记录,其中包含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

但idk为什么它一直错误

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 ;

最新更新