CREATE PROCEDURE `Proc_ExtRmData`()
BEGIN
-- 需要定义接收游标数据的变量
DECLARE v_BiotopeID Varchar(36);
DECLARE v_BuildingID Varchar(36);
DECLARE v_UnitID Varchar(36);
DECLARE v_UnitNo int(1);
DECLARE v_HouseID Varchar(36);
DECLARE v_RoomID Varchar(40);
DECLARE v_RoomName Varchar(36);
DECLARE v_FloorNo int(1);
DECLARE v_FloorArea int(2);
DECLARE v_InsideArea int(2);
DECLARE v_ChargeArea int(2);
DECLARE v_HouseType Varchar(16);
DECLARE v_Direction Varchar(8);
DECLARE v_HouseholdCount int(1);
DECLARE v_Balance FLOAT(8,2);
DECLARE v_FeeTypeID Varchar(36);
DECLARE v_FeeType Varchar(36);
DECLARE v_HouseKeeperID Varchar(36);
DECLARE v_PaFlag int(1);
DECLARE v_State Varchar(8);
DECLARE v_UseType Varchar(8);
DECLARE v_RentType Varchar(8);
DECLARE v_LiveFlag int(1);
DECLARE v_UseTypeCode int(1);
DECLARE v_RentTypeCode int(1);
-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
-- 游标
DECLARE cur CURSOR FOR
SELECT
b.BiotopeID,b.BuildingID,u.BuildingUnitID,u.UnitNo,r.RoomID,r.RoomNo,r.Layer,
r.AreaBuild,r.AreaUse,r.AreaFee,r.HouseType,r.TowardTo,r.PeopleNumber,
r.Money,r.FeeTypeID,r.FeeType,r.WorkerID,r.IsCheckManager,r.State,r.UseType,r.RentType
From Etl_Biotope as a, Etl_Building as b, Etl_Unit as u, tblRoom as r
where (a.BioID='LE34F235') and (a.BiotopeID=b.BiotopeID) and (b.BuildingID=u.BuildingID) and (u.UnitID=r.Unit);
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN cur;
-- 开始循环
read_loop: LOOP
-- 提取游标里的数据,这里只有一个,多个的话也一样;
FETCH cur INTO v_BiotopeID,v_BuildingID,v_UnitID,v_UnitNo,v_RoomID,v_RoomName,v_FloorNo,
v_FloorArea,v_InsideArea,v_ChargeArea,v_HouseType,v_Direction,v_HouseholdCount,
v_Balance,v_FeeTypeID,v_FeeType,v_HouseKeeperID,v_PaFlag,v_State,v_UseType,v_RentType;
-- 声明结束的时候
IF done THEN
LEAVE read_loop;
END IF;
-- 这里做你想做的循环的事件
set v_HouseID = lower(substr(v_RoomID,2,36));
CASE v_State
WHEN '登记' THEN set v_LiveFlag = 0;
WHEN '未住' THEN set v_LiveFlag = 1;
WHEN '已住' THEN set v_LiveFlag = 2;
WHEN '已租' THEN set v_LiveFlag = 3;
ELSE set v_LiveFlag = 1;
END CASE;
IF (v_LiveFlag = 0) or (v_LiveFlag = 1) or (v_UseType='临建')
THEN set v_UseTypeCode=0;
ELSEIF (v_UseType='住宅')
THEN set v_UseTypeCode=1;
ELSE set v_UseTypeCode=2;
END IF;
INSERT INTO Etl_House
(BiotopeID,BuildingID,UnitID,UnitNo,HouseID,RoomID,RoomName,FloorNo,
FloorArea,InsideArea,ChargeArea,HouseType,Direction,HouseholdCount,
Balance,FeeTypeID,FeeType,HouseKeeperID,PaFlag,LiveFlag,UseType)
VALUES (v_BiotopeID,v_BuildingID,v_UnitID,v_UnitNo,v_HouseID,v_RoomID,v_RoomName,v_FloorNo,
v_FloorArea,v_InsideArea,v_ChargeArea,v_HouseType,v_Direction,v_HouseholdCount,
v_Balance,v_FeeTypeID,v_FeeType,v_HouseKeeperID,v_PaFlag,v_LiveFlag,v_UseTypeCode);
END LOOP;
-- 关闭游标
CLOSE cur;
END
分享到:
相关推荐
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
mysql 数据库已存储过程插入一千万条测试数据!利用项目即将上限需要,可以完全系统的测试项目性能!里面又完整的文档和各项说明:打开文档就可以实际操作。
mysql利用存储过程批量添加数据库表随机测试内容
批量插入百万条数据,自定义函数,动态生成数据,伪造真实数据。
sqlserver的存储过程批量生成insert插入语句 在需要批量导入数据或者保留数据的情况下使用
Django2+ MySQL8 数据插入和查询 Django2+ MySQL8 数据插入和查询
本文实例讲述了Mysql存储过程中游标的用法。分享给大家供大家参考。具体如下: 1. 批量插入商户路由关联数据: DELIMITER $$ USE `mmm_mac`$$ DROP PROCEDURE IF EXISTS `批量插入商户路由关联数据`$$ CREATE ...
但是当我们需要批量插入数据的时候,这样的语句却会出现性能问题。例如说,如果有需要插入100000条数据,那么就需要有100000条insert语句,每一句都需要提交到关系引擎那里去解析,优化,然后才能够到达存储引擎做真...
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。这篇文章主要介绍了mybatis中批量插入的两种方式(高效插入)的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
一、概述 本章节介绍使用游标来批量进行表操作,包括批量添加索引、批量添加字段等。...理解MySQL存储过程和函数://www.jb51.net/article/81381.htm 二、正文 1、声明光标 DECLARE cursor_name CURSOR FOR se
主要介绍了MySql批量插入优化Sql执行效率实例详解的相关资料,需要的朋友可以参考下
测试时没有数据,便安装了一个MySql,建了张表,在建了个while循环批量插入10W条测试数据的时候,执行时间之长无法忍受,便查资料找批量插入优化方法,这里做个笔记。 数据结构 寻思着分页时标准列分主键列、索引列...
怎么利用MyBatis传List类型参数到数据库存储过程中实现批量插入数据?接下来通过本文给大家介绍Mybatis传list参数调用oracle存储过程,需要的朋友可以参考下
做项目需要,自己写的。可以批量选择一个文件夹中的图片并按指定序号存入数据库中,代码是C#写的,选图片时要注意逆向选,这样存到数据库中才是正确的顺序(可以看哪个显示选择文件的对话框,里面有文件顺序)
50.MySQL高级_批量插入数据脚本.avi 49.MySQL高级_慢查询日志.avi 48.MySQL高级_为排序使用索引OrderBy优化.avi 47.MySQL高级_in和exists.avi 46.MySQL高级_小表驱动大表.avi 45.MySQL高级_索引优化答疑...
尚硅谷_MySQL高级_批量插入数据脚本 · 51.尚硅谷_MySQL高级_用Show Profile进行sql分析 · 52.尚硅谷_MySQL高级_全局查询日志 · 53.尚硅谷_MySQL高级_数据库锁理论概述 · 54.尚硅谷_MySQL高级_读锁案例讲解 ...
不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定导入字段。 本文就将以MySQL数据库为例,介绍如何通过SQL命令行将某个表...
批量插入 单条插入和批量插入的效率问题 mysql多条数据插入效率大于单条数据插入 删除记录 delete from 表名 [where 条件] 如果没有指定条件,会将表中数据一条一条全部删除掉。 delete删除数据和truncate删除...
MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。 插入BLOB类型的数据必须使用PreparedStatement,因为BLOB类型的数据无法使用字符串拼接写的。 MySQL的四种BLOB类型...
主要介绍了Mysql中存储UUID去除横线的方法,本文给出了3个Mysql函数实现去除去UUID中的横线,需要的朋友可以参考下