首页 > 解决方案 > 创建一个函数/过程/循环用于在MYSQL中创建多个相同结构的表

问题描述

有没有办法使用循环/函数/过程创建多个相同结构的表?我知道有一种“喜欢”的方法,但为了知识,我也在寻找其他选择。

示例我想创建 5 个具有结构但名称不同的表:表名:abc def ghi jkl mno pqr

    drop procedure if exists create_table;
    DELIMITER //
    create procedure create_table
      (in str varchar(10))
    begin
      set @query = concat('create table str',
                '`col1` varchar(20), `col2` float,',
                '`col3` int(10), `date` date,');'
     execute query;
     end //
     DELIMITER ;

     call create_table(abc)
     call create_table(def)
     call create_table(ghi)
     call create_table(jkl)
     call create_table(mno)

没有任何效果,因为它只是将表名创建为“str”。

我希望我能够解释,我在找什么。

标签: mysql

解决方案


我发现我的错误,应该是

    drop procedure if exists create_table;
    DELIMITER //
    create procedure create_table
   (in str varchar(10))
       begin
         set @query = concat('create table,',str,);
         set @query = concat('`col1` varchar(20), `col2` float,',);
         set @query = concat('`col3` int(10), `date` date,');');
    prepare s from @query;
    execute s;
    end //
    DELIMITER ;

   call create_table(abc)
   call create_table(def)
   call create_table(ghi)
   call create_table(jkl)
   call create_table(mno)

推荐阅读