使用 mysql 游标 批量更新数据
来源:互联网 发布:解压加密文件软件 编辑:程序博客网 时间:2024/04/29 21:13
游标由于安全性问题,感觉用到的地方还是比较少,这里由于测试数据需要批量更新用到了,所以就mark一下。
本次使用游标目的是:遍历数据表,同时更新DATETIME类型的字段为某范围内随机时间。
首先是生成范围内随机日期的sql:
SELECT CONCAT(FLOOR(1980 + (RAND() * 35)),'-',LPAD(FLOOR(1 + (RAND() * 12)),2,0),'-',LPAD(FLOOR(3 + (RAND() * 8)),2,0));
然后是生成随机时间的sql:
SELECT CONCAT(LPAD(FLOOR(0 + (RAND() * 23)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0));
将日期和时间拼起来,就可以赋值了,下面是存储过程:
DELIMITER $$DROP PROCEDURE IF EXISTS `time_cursor`;CREATE PROCEDURE `time_cursor` ()BEGINDECLARE tcomdate,tjoindate,tquitdate,tbirthdate,tstartdate,tenddate DATETIME;DECLARE tempno VARCHAR(10);DECLARE done INT DEFAULT 0;DECLARE cur CURSOR FOR SELECT empno FROM t_personsales;DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;OPEN cur;FETCH cur INTO tempno;REPEATIF NOT done THENSELECT CONCAT(FLOOR(1990 + (RAND() * 25)),'-',LPAD(FLOOR(1 + (RAND() * 12)),2,0),'-',LPAD(FLOOR(3 + (RAND() * 8)),2,0),' ',LPAD(FLOOR(0 + (RAND() * 23)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0)) INTO tcomdate;SELECT CONCAT(FLOOR(2000 + (RAND() * 15)),'-',LPAD(FLOOR(1 + (RAND() * 12)),2,0),'-',LPAD(FLOOR(3 + (RAND() * 8)),2,0),' ',LPAD(FLOOR(0 + (RAND() * 23)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0)) INTO tjoindate;SELECT CONCAT(FLOOR(2010 + (RAND() * 6)),'-',LPAD(FLOOR(1 + (RAND() * 12)),2,0),'-',LPAD(FLOOR(3 + (RAND() * 8)),2,0),' ',LPAD(FLOOR(0 + (RAND() * 23)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0)) INTO tquitdate;SELECT CONCAT(FLOOR(1960 + (RAND() * 40)),'-',LPAD(FLOOR(1 + (RAND() * 12)),2,0),'-',LPAD(FLOOR(3 + (RAND() * 8)),2,0),' ',LPAD(FLOOR(0 + (RAND() * 23)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0)) INTO tbirthdate;SELECT CONCAT(FLOOR(1999 + (RAND() * 10)),'-',LPAD(FLOOR(1 + (RAND() * 12)),2,0),'-',LPAD(FLOOR(3 + (RAND() * 8)),2,0),' ',LPAD(FLOOR(0 + (RAND() * 23)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0)) INTO tstartdate;SELECT CONCAT(FLOOR(1999 + (RAND() * 15)),'-',LPAD(FLOOR(1 + (RAND() * 12)),2,0),'-',LPAD(FLOOR(3 + (RAND() * 8)),2,0),' ',LPAD(FLOOR(0 + (RAND() * 23)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0)) INTO tenddate;UPDATE t_personsales SET COMDATE = tcomdate,JOINDATE = tjoindate,QUITDATE = tquitdate,BIRTHDATE = tbirthdate,CHK_START_DATE = tstartdate, CHK_END_DATE = tenddate where empno = tempno;END IF;FETCH cur INTO tempno;UNTIL done = 1END REPEAT;CLOSE cur;END
然后 call time_cursor(); 大功告成。
0 0
- 使用 mysql 游标 批量更新数据
- 使用游标批量更新数据
- mysql游标示例 mysql游标简易教程 mysql批量操作数据 mysql批量更新数据 mysql逐条更新数据
- MYSQL存储过程:批量更新、插入数据、游标
- mysql批量更新数据
- Mysql批量更新数据
- Mysql批量更新数据
- Mysql批量更新数据
- MySQL 批量更新数据
- MySql 使用存储过程和游标读取并更新数据
- 游标操作,使用游标,更新数据
- Mysql批量更新/插入数据
- mysql 批量update更新数据
- mysql 使用 游标进行批量刷新
- oracle 使用游标批量分段插入数据
- SQL触发器使用游标获取批量数据
- 使用SqlDataAdapter批量更新数据
- 使用游标更新表中数据
- Android框架 androidannotations 的配置 android studio 配置
- 线性表相关读书笔记
- 学习潜水-20160831-Mac移动硬盘内部分文件变成灰色导致无法复制和执行
- 数据挖掘---分类算法之K近邻(KNN)算法
- HTML5+CSS小知识点
- 使用 mysql 游标 批量更新数据
- $_POST、input数据流和$HTTP_RAW_POST_DATA的区别
- FBI警示——选举网站被黑,所有眼睛都盯着俄罗斯黑客
- PHP简单签到功能实现
- 2428: [HAOI2006]均分数据
- javascript 创建动态表格
- jQuery-file-upload插件的使用(小实例)
- Linux下如何安装最新版本工具
- Jmeter 解决unable to access ApacheJMeter.jar的问题