Ich möchte Daten aus jeder Tabelle ausgeben, die eine first_name
Spalte enthält. Ich stelle die folgende Prozedur zusammen, aber in meiner Schleife interpretiert mysql den Tabellennamen wörtlich, anstatt die Variable table_name
auszuwerten. Was ist das Problem?MySQL-Schleife durch Tabellen
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();
Ich habe ein ähnliches Problem. Wenn ich den Tabellennamen nicht nach 'LIKE '% first%' filtern möchte, kann ich' SHOW TABLES' anstelle von 'SELECT TABLE_NAME ...' verwenden? – Kal
Tabellenname ist ein reservierter Name. sollte zu einem anderen Namen geändert werden. –