问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-12-17 02:16

我来回答

1个回答

热心网友 时间:2023-09-13 07:21

方案一: 存储过程

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_plicated 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_plicated = 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(plicated column)等问题, 存储过程不是很好弄,中间过程也不好跟踪, 不一定能查出哪里错了;

第二种方案直接在命令行中贴上,每一个句话正确错误一看就明了.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
街头篮球手游中锋攻略汇总 C位攻略大全 街头篮球手游中锋有什么技巧 中锋C技巧详解 php一个表单提交数据怎么区分开,隐藏域可以吗,如果可以怎么用。 梦见牙掉光了什么预兆 梦见牙齿掉完了是什么征兆 梦见牙齿全掉了是什么预兆 梦见一口牙全部掉了是什么预兆 教师年度考核不认课的领导班子成员,干的工作不少,怎样考核办法公平... 湖北省郧西县义务教育学校绩效工资实施办法绩效工资总量和水平的... 事业单位年底是否有绩效奖金的 2016年10月10日澄迈今天有台风吗 2016年10月10日寄圆通速递到11日都没物流信息 2016年的10月10日至11日的天气状况如何 陕西展腾商贸有限公司怎么样? 靖边县驰曜商贸有限公司怎么样? 府谷县贵荣工贸有限公司怎么样? 榆林市金田园工贸有限责任公司怎么样? 榆林市天隆鑫商贸有限公司怎么样? 榆林市中兴伟业建材有限公司怎么样? 天外飞仙中所有死的人都是怎么死的 防火分区之间的墙上安装的门为 天外飞仙中上官浩琪是怎么死的? 园林艺术画在墙上的门叫做什么门 怎样解决一面墙上的卧室门和厨房门颜色不一致的问题? 承重墙上的门可以改动么? 如何把node-dev和gulp结合起来用 node-dev使用简介 房间网线没接水晶头,找物业要另收费吗? 齐齐哈尔小燕系列*案告破,为何行凶者作案都要问对方是不是小燕? 出租房网线没有水晶头 1984年2月11日是什么命五行缺什么 84年2月11号什么星座 我1984年2月11日生请问虚岁多大 1984年2月11日巳时的五行查询 1984年2月11日出生的人的运势怎样 1984年阴历1月10号对应的阳历几号?星座是什么? 1984年正月初十和1986年五月二十一各属于什么星座???谢谢 扳倒井六角形瓶子是什么酒 优美古风句子36条 公司水电费扣除明细表的公式 以前看过一部日本电影 演的大概是一男一女两人来到一个小岛上,岛上有个小木屋,挺唯美的爱情故事~~ 很多国外电影里很唯美的场景,草地,大树,木屋,湖水.叫什么地形? 求一部欧美电影,关于木屋的, 人们亲切称米勒为什么 米勒被后人称为什么 米勒为什么被称为“美国的弗洛伊德”? 怀孕可以一个人生下来并且抚养吗 画家米勒被后人称为“ ” 离婚怀孕了,一个人可以把孩子生下来吗 声卡不是正常安装