sql的存储过程实例--循环动态创建表
生活随笔
收集整理的這篇文章主要介紹了
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();
總結
以上是生活随笔為你收集整理的sql的存储过程实例--循环动态创建表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql中如何删除多个表格_mysql
- 下一篇: mysql 图片 格式_mysql存储图