热线电话:13121318867

登录
2019-02-24 阅读量: 908
如何在mysql中优雅地为表同时新增10列?

问题描述:

当我们在使用sql进行批量处理的时候,例如为表新增10列,涉及了很多重复操作,对于重复操作,能否利用编程思想予以优化呢?


解决思路:

  • prepare、procedure和while...do的组合,即可实现复杂需求的实现
  • 其中prepare是预处理语句;procedure是存储过程,可以理解为封装函数;while...do...即循环的实现形式;delimiter是转义字符,将“;”暂时用“$$”替代
drop procedure if exists t;

delimiter $$
create procedure t()
begin
declare i int;
declare num varchar(2);
set i =1;
set @sqltext='';
while i<10 do
set num=cast(i as char);
set @sqltext = concat(@sqltext,' add c',num,' char(1) not null, ');
set i=i+1;
end while;
set @sqltext=concat('alter table aaa ',@sqltext,'add c10 char(1) not null;');
end $$
delimiter ;

call t();
select @sqltext;

prepare t from @sqltext;
execute t;

select * from aaa;
6.8407
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子