• 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();
  • 相关阅读:
    第11条:用zip函数同时遍历两个迭代器
    第10条:尽量用enumerate取代range
    第9条:用生成器表达式来改写数据量较大的列表推导式
    MySQL的约束
    VMware下所有的系统网卡启动不起来
    windows下的mysql闪退问题
    大型网站架构模式
    MySQL的information_schema库
    mysql复制表结构和内容
    希尔排序 堆排序 归并排序
  • 原文地址:https://www.cnblogs.com/lemon-flm/p/7649483.html
Copyright © 2020-2023  润新知