Tôi muốn xuất dữ liệu từ mọi bảng có chứa cột first_name
. Tôi đặt cùng thủ tục sau đây, nhưng trong vòng lặp của tôi, mysql diễn giải tên bảng theo nghĩa đen thay vì đánh giá biến số table_name
. Sửa chữa là gì?Vòng lặp MySQL qua các bảng
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();
Tôi gặp vấn đề tương tự. Nếu tôi không quan tâm đến việc lọc tên bảng thành 'LIKE '% first%'', tôi có thể sử dụng 'SHOW TABLES' thay vì' SELECT TABLE_NAME ... 'không? – Kal
table_name là tên dành riêng. nên được đổi thành tên khác. –