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,sql存储过程实例
`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();

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。