中易网

求一个 MySQL的存储过程,给一个数据库里面所有的表都追加一个字段(表名没有规律)

答案:1  悬赏:70  
解决时间 2021-01-24 16:25
求一个 MySQL的存储过程,给一个数据库里面所有的表都追加一个字段(表名没有规律)
最佳答案
方案一: 存储过程
DROp PROCEDURE IF EXISTS SP_COLUMN_ADD;
DELIMITER $$
CREATE PROCEDURE SP_COLUMN_ADD()
BEGIN
 
  DECLARE command VARCHAr(200);
  
  DECLARE founded INT DEFAULT 1;   
  DECLARE column_duplicated BOOLEAN DEFAULT FALSE;
  
  #把这个游标的语句查下,是否满足需求
  DECLARE cur_sleest CURSOR FOR 
   SELECT CONCAt('ALTER TABLE ', TABLE_NAME, ' ADD COLUMN YOUR_COLUMN YOUR_TYPE;') AS SQL_COMMAND
          #eg: `ALTER TABLE TMP_SLEEST ADD COLUMN C1 INT,ADD COLUMN C2 VARCHAr(2);`
     FROM INFORMATION_SCHEMA.TABLES
    WHERe TABLE_SCHEMA="yourschema"  
      AND TABLE_TYPE="BASE TABLE";
        
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET founded = 0;    
  DECLARE CONTINUE HANDLER FOR 1060 SET column_duplicated = true;
       
  OPEN cur_sleest;  
  
  sleet_loop : LOOP
    FETCH cur_sleest INTO command;
    IF founded = 0 THEN LEAVE sleet_loop; END IF;    
    SET @sql := command;
    PREPARE stmt FROM @sql;
    EXECUTE stmt;    
    DEALLOCATE PREPARE stmt;
  END LOOP sleet_loop;
  
  CLOSE cur_sleest;
END$$
DELIMITER ;

方案二: 扫出指令集合到本地文件,贴到命令行执行
SELECt CONCAt("ALTER TABLE ", TABLE_NAME," ADD COLUMN YOUR_COLUMN YOUR_TYPE;")
  FROM INFORMATION_SCHEMA.TABLES
 WHERe TABLE_SCHEMA="yourschema"  
   AND TABLE_TYPE="BASE TABLE"
  INTO OUTFILe 'D:\add-column.sql'

不推荐存储过程, 因为可能要处理1060(duplicated column)等问题, 存储过程不是很好弄,中间过程也不好跟踪, 不一定能查出哪里错了;
第二种方案直接在命令行中贴上,每一个句话正确错误一看就明了.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
单位涌水量小于多少属于隔水层
中山有全国性的辅导机构吗?像学大教育那种
用徐字取一个不超四个字的网名,谢谢!
有谁用过支付宝的支付盾吗?好用吗?值得买嘛
绿洁干洗(沙州镇桥头北巷5号楼对面)地址在什
我们对拘役管制不服,可以上诉吗
脸上的疤痕怎么去除,小时候就有的,还能去掉
用沙子 石头 可以弄鱼缸过滤么?
什么是质体?
刚出生几天发现孩子头上有两块没头发而且颜色
绝色佳人的出处
胆固醇高的人能吃蟹黄吗
韩国组合那些一位很难得的么,infinite拿了都
我想知道他打瘦脸针,打下巴。这些是怎么学会
什么是科研机构
推荐资讯
怎麼去小腿肌肉,那個神經阻斷術安全么。
光敏二极管原理图
广州IT技术,网络工程师,系统集成工程师,技术
6我妈是什么意思
给我写一分怎么去推销快餐方案
清明夜和寒食两首古诗怎么写?
现在买什么洗衣机好
瓷砖拼图背景墙效果图大概多少钱一平方
中午吃什么,九款上班族减脂午餐参考
90平房子装修,门、门套、窗套全部是白橡色,
美容院的丰胸仪器有副作用吗?
贵阳患者求助,声带上长肉是怎么回事?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?