mysql - 创建一个函数/过程/循环用于在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”。
我希望我能够解释,我在找什么。
解决方案
我发现我的错误,应该是
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)
推荐阅读
- airflow - Airflow -D 不工作,不在后台运行
- python - 从 python 调用 Fortran
- android - HashSet 中出现重复项
- php - 使用带有 PHP 的 Google API 获取日历事件时出现 404 错误
- vb.net - DataGridView 添加复选框并允许通过复选框仅选择基于变量值的记录
- pandas - Daframe 打印为 str 而不是 dict
- php - 如何在 Laravel 中上传文件
- sql - 最短和最长的城市名称
- flutter - Flutter Dio 数据对象
- c - 我们可以在linux中使用getcontext来获取另一个线程的上下文吗?