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();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .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语句:使用策略模式优化代码结构