sql的存储过程实例--循环动态创建表

 

创建一个存储过程,动态添加100张track表
表名track_0 ~~ track_99
注:sql的拼接只能用 CONCAT()函数
复制代码
-- 创建一个存储过程
CREATE PROCEDURE create_track_table()

begin

    declare num int;              -- 定义一个循环变量
    set num=0;

-- 循环 100 遍
while num <= 99 do
    SET @table_name=CONCAT('track_',num);  -- 定义表名(变量定义表名)    
                                           -- 拼接字符串需要用 concat()函数

    -- 定义创建 table的 sql语句
  SET @sql_begin='CREATE TABLE ';
    SET @sql_end="(
            `mac_id` varchar(16) NOT NULL COMMENT '设备IMEI',
            `mac_type` varchar(12) DEFAULT NULL,
            `channel` varchar(3) DEFAULT 'UDP',
            `type` smallint(2) NOT NULL,
            `x` int(4) NOT NULL,
            `y` int(4) NOT NULL,
            `gpstime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
            `bvalid` varchar(10) DEFAULT '0' COMMENT '0:无效  1:有效  2:基站定位 ',
            `speed` int(2) DEFAULT NULL,
            `dir` int(2) DEFAULT NULL,
            `s1` varchar(32) DEFAULT NULL,
            `s2` varchar(48) DEFAULT NULL,
            `s3` varchar(48) DEFAULT NULL,
            `s4` varchar(128) DEFAULT NULL,
            `ins_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
            `imagefile` char(1) DEFAULT '0',
            `battery` tinyint(4) DEFAULT NULL COMMENT '电量',
            KEY `mac_id` (`mac_id`,`mac_type`,`gpstime`) USING BTREE
            ) ENGINE=MyISAM DEFAULT CHARSET=utf8";

    set @create_sql=CONCAT(@sql_begin,@table_name,@sql_end);   -- 拼接一个完整的sql语句

    PREPARE create_table from @create_sql;              -- 预处理sql语句 (还可以加参数)
    EXECUTE create_table;                               -- 执行

    set num=num+1;

-- 结束循环
end while;
    commit;
end



-- 执行存储过程 CALL create_track_table();
复制代码

 

posted @   低调人生  阅读(2003)  评论(1编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示