博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL使用存储过程为数据库中全部的表增加备用字段 ...
阅读量:6040 次
发布时间:2019-06-20

本文共 1836 字,大约阅读时间需要 6 分钟。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/84879858

需求描述

要为数据库里的所有的表统一加上十六个备用字段,前提是备用字段名取表名前三位,拼接上备用1-16 ,
16个字段中,其中8个varchar, 4个int, 4个datetime

1.创建一个简单的表

DROP TABLE customer_detail_info;CREATE TABLE `customer_detail_info` (  `cus_id` int(11) NOT NULL,  `name` varchar(255) DEFAULT NULL,  PRIMARY KEY (`cus_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 查看表结构DESC customer_detail_info;

表结构截图:

在这里插入图片描述

2.创建一个存储过程

DROP PROCEDURE IF EXISTS `procedure_update_table`;DELIMITER ;;CREATE  PROCEDURE `procedure_update_table`(IN table_name VARCHAR(50))BEGINdeclare i int;DECLARE sq VARCHAR(8000);SET  i = 1 ;WHILE i < 17 DO--  取表名前三位set @qz = LEFT(table_name,3);--  拼接字段名set @pp = CONCAT(@qz,i);-- 前八个字符类型IF i < 9 THENSET  sq = CONCAT('ALTER table ',table_name,' add column ',@pp, ' VARCHAR(8) ');-- 中间四个intELSEIF (i > 8 && i < 13) THENSET  sq = CONCAT('ALTER table ',table_name,' add column ',@pp, ' INT(11)');-- 其他的时间类型ELSE SET  sq = CONCAT('ALTER table ',table_name,' add column ',@pp, ' DATETIME ');end IF;SET i = i + 1 ;SET @_SQL = sq ;-- 预定义sqlPREPARE stmt FROM @_SQL ;-- 执行sqlEXECUTE stmt ;-- 释放连接DEALLOCATE PREPARE stmt;-- 结束While 循环END WHILE;END;

3.整个库中全部表获取的存储过程

-- 已存在的存储删除DROP PROCEDURE IF EXISTS procedure_get_all_tables;DELIMITER ;;CREATE PROCEDURE procedure_get_all_tables()BEGIN-- 用于判断是否结束循环DECLARE done int DEFAULT 0;-- 存储表名称的变量DECLARE cur VARCHAR(200);DECLARE tbs_list CURSOR FOR SELECT TABLE_NAME FROM information_schema.`TABLES` WHERE TABLE_Schema = 'hqh_log';-- 定义 设置循环结束标识done值怎么改变 的逻辑declare continue handler for not FOUND set done = 1; OPEN tbs_list;-- 循环开始 REPEATFETCH tbs_list INTO cur;if not done THEN   CALL procedure_update_table(cur);end if;until done end repeat;CLOSE tbs_list;END;

4.执行存储过程

-- 调用存储过程CALL procedure_get_all_tables();-- 查看表结构DESC customer_detail_info;

在这里插入图片描述

给大家在提供一个mybatis调用存储过程的例子

你可能感兴趣的文章
<html:form>标签
查看>>
除了《一无所有》,我一无所有
查看>>
每日英语:China Seeks to Calm Anxiety Over Rice
查看>>
C++中struct和class的区别 [转]
查看>>
C++ ofstream和ifstream详细用法
查看>>
Mysql 连接查询 Mysql支持的连接查询有哪些
查看>>
Hive Streaming 追加 ORC 文件
查看>>
打开Apache自带的Web监视器
查看>>
eclipse插件
查看>>
Android笔记:通过RadioGroup/RadioButton自定义tabhost的简单方法
查看>>
ELCSlider
查看>>
XCode工程中 Targets详解
查看>>
Ext.Msg.prompt的高级应用
查看>>
Postgres 中 to_char 格式化记录
查看>>
关于联合索引
查看>>
开源 java CMS - FreeCMS2.7 登录移动端管理中心
查看>>
Android FM模块学习之三 FM手动调频
查看>>
Python 设置系统默认编码以及其他编码问题大全
查看>>
Vbs脚本编程简明教程之十四
查看>>
如何UDP/TCP端口是否通了
查看>>