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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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();。

相关文档
最新文档