mysql fetch next from_MySql 存储过程 动态sql
將從表中查出的數據作為表名,對其進行操作
根據查出來的表名,將該表的數據全部插入到一個總表
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 fetch next from_MySql 存储过程 动态sql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Intel将彻底退出5G基带市场:技术转
- 下一篇: 别走错了!成都国际航班今起正式转场天府机