我想輸出每個包含first_name
列的表的數據。我將以下過程放在一起,但在我的循環中,mysql逐字地解釋表名,而不是評估變量table_name
。什麼是修復?MySQL循環遍歷表
delimiter //
drop procedure if exists hunt //
create procedure hunt()
begin
DECLARE done int default false;
DECLARE table_name CHAR(255);
DECLARE cur1 cursor for SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = "wholesale_production" and COLUMN_NAME LIKE "%first%" ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
open cur1;
myloop: loop
fetch cur1 into table_name;
if done then
leave myloop;
end if;
select * from `wholesale_production`.table_name where created_at >= '2012-10-01';
end loop;
close cur1;
end //
delimiter ;
call hunt();
我有類似的問題。如果我不關心將表名稱過濾爲LIKE'%first%'',我可以使用'SHOW TABLES'而不是'SELECT TABLE_NAME ...'嗎? – Kal
table_name是保留名稱。應改爲不同的名稱。 –