一个MySQL的批量修改表字段(列)类型的自定义存储过程
发布日期:2022-03-03 10:44:14
浏览次数:5
分类:技术文章
本文共 1569 字,大约阅读时间需要 5 分钟。
-- 其作用为批量修改一个表的一种字段(列)类型为另一种,例如把VARCHAR(255)修改成INT(128)的,纯属娱乐,风险自负。 delimiter // DROP PROCEDURE IF EXISTS batch_alter_column_type ; CREATE PROCEDURE batch_alter_column_type ( tbl_name VARCHAR (128), -- 表名 from_col_type VARCHAR (32), -- 修改之前的字段类型 to_col_type VARCHAR (32) -- 修改之后的字段类型 ) BEGIN DECLARE col_name VARCHAR (128); -- 当前字段名 DECLARE i_done INT (1) ; -- 游标结束标记 DECLARE SQL_FOR_ALTER VARCHAR (1024) ; DECLARE mycursor CURSOR FOR SELECT COLUMN_NAME FROM INFORMATION_SCHEMA. COLUMNS WHERE CONVERT (TABLE_NAME USING utf8) COLLATE utf8_bin = CONVERT (tbl_name USING utf8) -- 字符串类型转换 AND CONVERT (data_type USING utf8) COLLATE utf8_bin IN (from_col_type) ; DECLARE CONTINUE HANDLER FOR NOT FOUND SET i_done = 1 ; OPEN mycursor ; exe_loop : -- 自定义loop名 LOOP FETCH mycursor INTO col_name ; IF i_done = 1 THEN LEAVE exe_loop ; END IF ; SET SQL_FOR_ALTER = CONCAT( "ALTER TABLE ", tbl_name, " MODIFY COLUMN ", col_name, " ", to_col_type ) ; -- 拼接SQL SET @SQL = SQL_FOR_ALTER ; PREPARE stmt FROM @SQL ; EXECUTE stmt ; -- 执行SQL SET i_done = 0 ; -- 重置标记 END LOOP; CLOSE mycursor ; END// -- 例子 -- 建表 DROP TABLE IF EXISTS `tbcountdetail` ; CREATE TABLE `tbcountdetail` ( `id` INT (11) NOT NULL, `batch` VARCHAR (10) DEFAULT NULL, `organId` VARCHAR (10) DEFAULT NULL, `facId` VARCHAR (10) DEFAULT NULL, `model` VARCHAR (10) DEFAULT NULL, `serialNo` VARCHAR (10) DEFAULT NULL, `status` VARCHAR (10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE = INNODB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci ; -- 执行 CALL batch_alter_column_type ( 'tbcountdetail', 'varchar', 'int(10)' ) ;转载地址:https://blog.csdn.net/yangjiegang8/article/details/79605436 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月02日 06时27分45秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
hdu 6170(正则表达式)
2019-04-26
排列组合 "n个球放入m个盒子m"问题 总结(转)
2019-04-26
codeforces845C(stl)
2019-04-26
图的几种存储方式(邻接矩阵+邻接表+vector)
2019-04-26
[LeetCode] 67. 二进制求和(简单模拟二进制求和)
2019-04-26
HDU1233(基础最小生成树 prim和 kruskal)
2019-04-26
终于找到可以一文多发的平台了!
2019-04-26
IntelliJ IDEA 2019 快捷键终极大全,速度收藏!
2019-04-26
第3章-5 字符转换 (15分)【python】
2019-04-26
L1-068 调和平均 (10 分)
2019-04-26
L1-069 胎压监测 (15 分)
2019-04-26
L1-071 前世档案 (20 分)
2019-04-26
L1-072 刮刮彩票 (20 分)
2019-04-26
L2-012 关于堆的判断 (25 分)
2019-04-26
L1-064 估值一亿的AI核心代码 (20 分)
2019-04-26
L2-033 简单计算器 (25 分)
2019-04-26
L2-034 口罩发放 (25 分)
2019-04-26
L2-019 悄悄关注 (25 分)
2019-04-26
L1-020 帅到没朋友 (20 分)
2019-04-26
L1-046 整除光棍 (20 分)
2019-04-26