2015-04-02 45 views

回答

1

您可以創建一個存儲過程並調用一次。下面是從一個表test

變化在下面的過程中的循環值和表名創建5表名test1...test5的一例

delimiter // 
create procedure `create_tables`() 
begin 
declare x INT ; 
set x = 1 ; 
while x <= 5 do 
    set @qry = concat("create table test",x," like test "); 
    prepare stmt from @qry; 
    execute stmt ; 
    deallocate prepare stmt ; 
    set x = x + 1; 
    end while; 
end ;// 

delimiter ; 

最後調用該過程作爲

call create_tables(); 

然後運行命令查看錶格

show tables; 

這裏是一個在mysql cli中的測試用例

mysql> delimiter // 
mysql> create procedure `create_tables`() 
    -> begin 
    -> declare x INT ; 
    -> set x = 1 ; 
    -> while x <= 5 do 
    -> set @qry = concat("create table test",x," like test "); 
    -> prepare stmt from @qry; 
    -> execute stmt ; 
    -> deallocate prepare stmt ; 
    -> set x = x + 1; 
    -> end while; 
    -> end ;// 
Query OK, 0 rows affected (0.22 sec) 
mysql> delimiter ; 
mysql> call create_tables() ; 
Query OK, 0 rows affected (0.74 sec) 

mysql> show tables ; 
+-----------------------+ 
| Tables_in_test  | 
+-----------------------+ 
| test     | 
| test1     | 
| test2     | 
| test3     | 
| test4     | 
| test5     | 
+-----------------------+