Chỉ cần thêm vào câu trả lời ở trên, MYSQL trả về lỗi ERROR 1046 (3D000): No database selected
nếu không có cơ sở dữ liệu nào được chọn trước khi bắt đầu thủ tục. Vì vậy, hãy thêm vào câu lệnh này use <<db_name>>;
vào câu trả lời ở trên. Giải pháp đã sửa đổi sẽ là:
use <<db_name>>;
DELIMITER $$
CREATE PROCEDURE drop_tables_like(pattern VARCHAR(255), db VARCHAR(255))
BEGIN
SELECT @str_sql:=CONCAT('drop table ', GROUP_CONCAT(table_name))
FROM information_schema.tables
WHERE table_schema=db AND table_name LIKE pattern;
PREPARE stmt from @str_sql;
EXECUTE stmt;
DROP prepare stmt;
END$$
DELIMITER ;
CALL drop_tables_like('a%', '<<db_name>>');
Đảm bảo bạn thay thế <> bằng tên thực tế của cơ sở dữ liệu. Chúc mừng!
Có thể kiểm tra bài đăng này: http://stackoverflow.com/questions/1589278/sql-deleting-tables-with-prefix –