美文网首页
MySql 存储过程 动态sql

MySql 存储过程 动态sql

作者: shiyoshinn | 来源:发表于2018-06-12 15:14 被阅读0次
将从表中查出的数据作为表名,对其进行操作
  • 根据查出来的表名,将该表的数据全部插入到一个总表
CREATE DEFINER=`root`@`%` PROCEDURE `InsertIntoBrief`()
BEGIN

      DECLARE  table_name varchar(64); 
    
    -- 遍历数据结束标志
    DECLARE done INT DEFAULT FALSE;
    
    DECLARE  cur_table CURSOR FOR select table_id from yp_table_mapping;
   
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    
    truncate yp_brief;
    OPEN  cur_table;     
    -- 开始遍历
    read_loop: LOOP
            -- 赋值
            FETCH  NEXT from cur_table INTO table_name;
            IF done THEN
                LEAVE read_loop;
             END IF;
             set @s = concat("insert into yp_brief select * from ",table_name);
             PREPARE s from @s;
             EXECUTE s;
    END LOOP;
 
 
    CLOSE cur_table;


END
  • 遍历所有表,判断是否存在某个字段,存在则修改该字段属性
CREATE DEFINER=`root`@`%` PROCEDURE `changeColumnName`()
BEGIN

      DECLARE  table_name varchar(64); 
    
    -- 遍历数据结束标志
    DECLARE done INT DEFAULT FALSE;
    -- 游标
    DECLARE  cur_table CURSOR FOR select table_id from yp_table_mapping;

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    
        TRUNCATE yp_brief;
    -- 打开游标
    OPEN  cur_table;     

    read_loop: LOOP
     
            FETCH  NEXT from cur_table INTO table_name;
            IF done THEN
                LEAVE read_loop;
             END IF;
             if EXISTS(SELECT * FROM information_schema.columns WHERE table_schema = 'database_name'  AND table_name = table_name AND column_name = 'a') then
                     -- 修改字段名称
                set @s = concat("ALTER TABLE ",table_name," CHANGE a b varchar(255)");
                PREPARE s from @s;
                EXECUTE s;
                     
              END IF;
    END LOOP;
 
 
    CLOSE cur_table;


END

相关文章

  • MySql 存储过程 动态sql

    将从表中查出的数据作为表名,对其进行操作 根据查出来的表名,将该表的数据全部插入到一个总表 遍历所有表,判断是否存...

  • Mysql存储过程

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本” 创建存储过程 调用存储过程 存储过程...

  • MySQL存储过程创建及调用方法

    MySQL存储过程是一个sql语句,那么我们如何创建呢,MySQL存储过程创建及修改,删除操作。 1,存储过程创建...

  • MySQL存储过程和存储函数

    一、存储过程 MySQL存储过程存储过程和存储函数参考文章 SQL语句需要先编译然后执行,而存储过程(Stored...

  • java基础-day44-MySQL进阶

    Mysql进阶 存储过程 1 什么是存储过程 1.存储过程,带有逻辑的sql语句2.之前的sql没有条件判断,没有...

  • Mysql存储过程Demo

    基础结构 mysql执行动态sql 存储过程的事务控制(提交和回滚)以及异常处理 疑问: 以下用两个prepare...

  • mysql学习笔记(四)

    存储过程 mysql命令的执行流程:SQL命令--->MySql引擎--->(分析)语法正确--->(编译)可识别...

  • mysql之存储过程

    mysql之存储过程:如何提高程序的性能和安全性。 1、什么是存储过程 存储过程:一系列sql语句预先存储在mys...

  • MySQL存储过程中使用动态sql语句

    MySQL的存储过程在5.0后的版本中支持了动态sql语句。也就是说我们可以通过传的参数不同拼接查询不同的表或执行...

  • Oracle数据库show_space使用

    1.创建存储过程 注:其中authid current_user为ORACLE动态sql在存储过程中出现表或视图不...

网友评论

      本文标题:MySql 存储过程 动态sql

      本文链接:https://www.haomeiwen.com/subject/fizleftx.html