【Mysql】更新多个数据库下同名表同名字段的长度

业务背景:
当前,我有多个同前缀的数据库(test前缀)
在这里插入图片描述
拥有该前缀的数据库里,都有一张right表
在这里插入图片描述
现在我们要把,test前缀数据库下的right表的字段name,长度变成1000.

实现SQL

-- 清除存储过程
DROP PROCEDURE IF EXISTS alter_col;
-- 定义新的分隔符
DELIMITER //
-- 创建存储过程
CREATE PROCEDURE alter_col ( ) BEGIN
-- 定义循环条件
	DECLARE
		flag INT DEFAULT 0;
-- 声明变量
	DECLARE
		db VARCHAR (50);
	DECLARE
		execSql VARCHAR (50);
	DECLARE
		result CURSOR FOR SELECT
		SCHEMA_NAME
	FROM
		INFORMATION_SCHEMA.SCHEMATA 
	WHERE
		SCHEMA_NAME like 'test%';
-- 退出循环
	DECLARE
		CONTINUE HANDLER FOR SQLSTATE '02000' 
		SET flag = 1;
-- 打开游标
	OPEN result;
	WHILE
			flag <> 1 DO
			FETCH result INTO db;
		SET @execSql = CONCAT( 'ALTER TABLE `', db,'`.`right` MODIFY COLUMN name varchar(70);' );
		PREPARE stmt FROM @execSql;
		EXECUTE stmt;	
	END WHILE;
	CLOSE result;
	END //
-- 还原默认分隔符
DELIMITER ;
-- 调用存储过程
call alter_col();
-- 清除存储过程
drop procedure if exists alter_col;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值