批量修改表结构

-- 定义存储过程
DELIMITER //
CREATE PROCEDURE alter_table () BEGIN
--  定义拼装sql变量
    DECLARE
        sqlstr VARCHAR ( 12560 );
--  定义游标记录变量
    DECLARE
        flag INT DEFAULT 0;
--  定义表名记录变量
    DECLARE
        tableName VARCHAR ( 60 );
--  获取满足条件的表名集合——游标
    DECLARE
        tableNames CURSOR FOR ( SELECT table_name FROM information_schema.TABLES WHERE table_name LIKE '表名' ORDER BY table_name );
--  游标变量
    DECLARE
        CONTINUE HANDLER FOR NOT FOUND 
        SET flag = 1;
--  拼装sql变量初始值
    set sqlstr = '';
--  开启游标
    OPEN tableNames;
--  取出游标里的值赋予表名记录变量
    FETCH tableNames INTO tableName;
--  开始循环
    WHILE
            flag <> 1 DO
--          拼装sql
            SET sqlstr = concat ( sqlstr, ' alter table ', tableName, ' modify column 列名 varchar(32);' );
--      取出游标里的值赋予表名记录变量
        FETCH tableNames INTO tableName;
    END WHILE;
--  关闭游标
    CLOSE tableNames;
--  查询拼装sql变量的值
    select sqlstr;
END;
// 
DELIMITER;
-- 执行存储过程
CALL alter_table ();
-- 执行完,删掉临时用的存储过程
DROP PROCEDURE alter_table;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。