当前位置: 首页 > news >正文

mysql 存储过程 遍历

CREATE DEFINER=`root`@`%` PROCEDURE `updStatus`()
BEGIN

DECLARE startTime DATETIME; 	
DECLARE endTime DATETIME; 	
DECLARE curTime DATETIME; 	
DECLARE id VARCHAR(36); 
DECLARE estatus VARCHAR(4); 



	-- 遍历数据结束标志
    DECLARE done INT DEFAULT FALSE;
    -- 游标
    DECLARE examIds CURSOR FOR SELECT EXAM_ID FROM t_exam WHERE EXAM_STATUS = 1 or EXAM_STATUS = 2;
    -- 将结束标志绑定到游标
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
		
		
		OPEN  examIds;     
    -- 遍历
    read_loop: LOOP
				-- 取值 取多个字段
				FETCH  NEXT from examIds INTO id;
				IF done THEN
						LEAVE read_loop;
				END IF;
				
				SELECT EXAM_STATUS INTO estatus FROM t_exam WHERE EXAM_ID = id ;
				
				IF estatus =1 THEN
						SELECT NOW() INTO curTime;
						SELECT EXAM_START_TIME INTO startTime  from t_exam WHERE EXAM_ID = id ;
						SELECT EXAM_END_TIME INTO endTime  from t_exam WHERE EXAM_ID = id ;					
						IF curTime >= startTime AND endTime > curTime  THEN
							UPDATE t_exam SET EXAM_STATUS = 2 WHERE EXAM_ID = id;			
						ELSEIF curTime >= endTime THEN
							UPDATE t_exam SET EXAM_STATUS = 3 WHERE EXAM_ID = id;			
						END IF;
				ELSE
					 SELECT NOW() INTO curTime;
					 SELECT EXAM_END_TIME INTO endTime  from t_exam WHERE EXAM_ID = id ;	
					 IF curTime >= endTime THEN
							UPDATE t_exam SET EXAM_STATUS = 3 WHERE EXAM_ID = id;			
					 END IF;
				END IF;
						
    END LOOP;
 
    CLOSE examIds;

END

相关文章:

  • mysql复制表结构的几种方式
  • TO_CHAR 和 TO_DATE的一些用法
  • Spark:学习笔记
  • linux:常用基本命令
  • Spark:数据倾斜处理一般从什么地方入手
  • MapReduce:中map和reduce的数量设置问题
  • MapReduce: 计数器(Counter)
  • Hive:HiveQL中如何排查数据倾斜问题
  • Java:字符序列:String,StringBuilder,StringBuffer三者的区别
  • Hive:分区和分桶
  • sql:Oracle:驱动表是什么?
  • MapReduce:原理之Word Count 以及Java实现
  • Hive:数据倾斜调优/解决方案总结
  • Spark:对数据倾斜的八种处理方法
  • Spark:spark集群中什么是cpu-core 内核?RDD分区个数?集群的节点个数?及三者与并行度的关系
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Iterator 和 for...of 循环
  • JSDuck 与 AngularJS 融合技巧
  • Js基础知识(一) - 变量
  • Objective-C 中关联引用的概念
  • Octave 入门
  • PHP 小技巧
  • React Transition Group -- Transition 组件
  • vue脚手架vue-cli
  • 程序员最讨厌的9句话,你可有补充?
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 前端
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 问题之ssh中Host key verification failed的解决
  • 用element的upload组件实现多图片上传和压缩
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 字符串匹配基础上
  • ​linux启动进程的方式
  • (70min)字节暑假实习二面(已挂)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (Note)C++中的继承方式
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (分类)KNN算法- 参数调优
  • (算法)Travel Information Center
  • (五)MySQL的备份及恢复
  • (译)2019年前端性能优化清单 — 下篇
  • (转)Google的Objective-C编码规范
  • ***测试-HTTP方法
  • **PHP分步表单提交思路(分页表单提交)
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .bat批处理出现中文乱码的情况
  • .NET delegate 委托 、 Event 事件
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET业务框架的构建
  • .NET中使用Protobuffer 实现序列化和反序列化