Hey 方外 醉月 wrote: > > How can i do if i want to drop tables with the same predix? > > For example, there is a database including a lot of tables,such as > tableA,tableB....(table*) > > Now,how can i drop those tables by using only one single statement? > > _________________________________________________________________ > 与联机的朋友进行交流,请使用 MSN Messenger: http://messenger.msn.com/cn >
If you are using 5.0: DELIMITER // DROP PROCEDURE drop_table_prefix// CREATE PROCEDURE drop_table_prefix(IN dbs VARCHAR(64), IN pref VARCHAR(63)) BEGIN DECLARE done INT DEFAULT 0; DECLARE i INT DEFAULT 0; DECLARE t_name VARCHAR(64); DECLARE cur1 CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = dbs AND TABLE_NAME LIKE CONCAT(pref,'%'); DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; OPEN cur1; REPEAT FETCH cur1 INTO t_name; IF NOT done THEN SET @qry = CONCAT('DROP TABLE ', t_name); PREPARE stmt FROM @qry; EXECUTE stmt; DEALLOCATE PREPARE stmt; END IF; UNTIL done END REPEAT; CLOSE cur1; END; // An example: mysql> SHOW TABLES; +----------------+ | Tables_in_test | +----------------+ | a1 | | a2 | | t1 | | t2 | +----------------+ 4 rows in set (0.00 sec) mysql> CALL drop_table_prefix('test', 't')// Query OK, 0 rows affected (0.01 sec) mysql> SHOW TABLES// +----------------+ | Tables_in_test | +----------------+ | a1 | | a2 | +----------------+ 2 rows in set (0.00 sec) Hope this helps. Mark -- Mark Leith, Support Engineer MySQL AB, Worcester, England, www.mysql.com Are you MySQL certified? www.mysql.com/certification -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]