mysql 游标 ,嵌套游标
DELIMITER $$ USE `fdtdata`$$ DROP PROCEDURE IF EXISTS `fn_ev_PerformaceMessage02`$$ CREATE DEFINER=`root`@`%` PROCEDURE `fn_ev_PerformaceMessage02`(p_time DATETIME,p_AgentId VARCHAR(64)) BEGIN -- p_time 必须是一个年月日的时间/*局部变量的定义 declare*/ DECLARE tempStudentId VARCHAR(64) DEFAULT NULL ;DECLARE tempSubjectId INT;DECLARE tempAve DECIMAL(18,2);DECLARE tempTime DATETIME;DECLARE tempLowMe INT; -- 同一个科目下,比我低的学生个数DECLARE tempAllStudent INT; -- 同一个科目下,所有的学生的个数 DECLARE tempPercent DECIMAL(18,2); -- tempLowMe/tempAllStudentDECLARE ConstGood FLOAT DEFAULT 0.90; -- 设置比多少优秀高?DECLARE returnStr TEXT; DECLARE cur1 CURSOR FOR SELECT c.`StudentId`,c.`SubjectId` ,CAST(AVG(p.`AveScore`) AS DECIMAL(18,2)) AS ave FROM `tb_fdt_courseitem` c INNER JOIN `tb_fdt_performance` p ON c.`CourseItemId`=p.`CourseItemId` WHERE c.`StartDate`>= p_time AND c.`EndDate` <DATE_ADD(p_time,INTERVAL 1 DAY) AND c.`AgentId`=p_AgentId GROUP BY studentid,subjectid ORDER BY studentid;/* mysql 用异常来判断是不是已经跳出了循环,把 游标 异常后 捕捉 ,并设置 循环使用 变量 tmpname 为 null 跳出循环。 */ DECLARE CONTINUE HANDLER FOR NOT FOUND SET tempStudentId = NULL;DROP TEMPORARY TABLE IF EXISTS tmp_dingshi_PerformaceMessage; CREATE TEMPORARY TABLE tmp_dingshi_PerformaceMessage -- 获得某一天,学生的id和科目的id,已经自己在这个科目的平均分 SELECT c.`StudentId`,c.`SubjectId` ,CAST(AVG(p.`AveScore`) AS DECIMAL(18,2)) AS ave FROM `tb_fdt_courseitem` c INNER JOIN `tb_fdt_performance` p ON c.`CourseItemId`=p.`CourseItemId` WHERE c.`StartDate`>= p_time AND c.`EndDate` <DATE_ADD(p_time,INTERVAL 1 DAY) AND c.`AgentId`=p_AgentId GROUP BY studentid,subjectid ORDER BY studentid;/*开游标*/ OPEN cur1;/*游标向下走一步*/ FETCH cur1 INTO tempStudentId,tempSubjectId,tempAve;/* 循环体 这很明显 把游标查询出的 name 都加起并用 ; 号隔开 */WHILE ( tempStudentId IS NOT NULL) DO-- select tempStudentId,tempSubjectId,tempAve;SET tempLowMe= (SELECT COUNT(*) FROM tmp_dingshi_PerformaceMessage WHERE ave<(tempAve) AND subjectid=tempSubjectId);SET tempAllStudent=(SELECT COUNT(*) FROM tmp_dingshi_PerformaceMessage WHERE subjectid=tempSubjectId);SET tempPercent=tempLowMe/tempAllStudent;SELECT tempStudentId,tempSubjectId,tempAve,tempLowMe,tempAllStudent,tempPercent;IF(tempPercent>=ConstGood) THEN -- 如果比自己差的有19个人,一共20个人,那么19/20=95% 就是比95%的要高CALL fn_ev_PerformaceMessage03(tempStudentId,tempSubjectId);END IF;/*游标向下走一步*/ FETCH cur1 INTO tempStudentId,tempSubjectId,tempAve;END WHILE;CLOSE cur1; SELECT returnStr;END$$ DELIMITER ;
mysql 游标 ,嵌套游标相关推荐
- mysql存储过程在实际开发中怎么用_MYSQL存储过程开发中怎么使用游标嵌套
mysql存储过程开发中如何使用游标嵌套 在实际业务逻辑开发中,难免用到游标嵌套,举例如下: delimiter // drop procedure if exists good_nested_cur ...
- mysql cursor 嵌套_MYSQL 存储过程多游标嵌套遍历
mysql 存储过程临时表.多游标嵌套使用样例: CREATE PROCEDURE method(IN start_Code varchar(10),IN end_Code varchar(10),i ...
- MySql 循环执行语句,循环执行update,详细介绍【游标嵌套】
今天在工作的时候,遇到一个需求. 需要去把一个字段(原本是uuid),改成00001,00002,这样的格式.如果是数据比较少当然无所谓了,但是表里面有上千条数据,这个时候再去手动修改就不科学了. 本 ...
- mysql while 游标_mysql 游标 loop while 的使用
项目需求:对表进行重新构建,这个用java的缺点是数据的传送以及遍历的话会消耗更多的资源,因此使用mysql的存储过程进行构建. 具体要求:跳过原本设置的假期和课程本身的假期对数据进行重排. 1.游标 ...
- MS SQL Server2005存储过程、游标、游标嵌套综合例子
MS SQL Server2005存储过程.游标.游标嵌套综合例子: 放在这里备忘>>> Java代码 create proc decisionPathRefSchemes as b ...
- 什么是mysql的游标_MySQL游标概念是什么 MySQL游标概念与用法介绍
本篇文章小编给大家分享一下MySQL游标概念与用法介绍,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1.游标的概念(Cursor) 一条sql,对应N条资源,取出资源的接 ...
- 嵌套游标以生成复杂的报表
--以下示例显示如何嵌套游标以生成复杂的报表.为每个供应商声明内部游标 SET NOCOUNT ON DECLARE @vendor_id int, @vendor_name nvarchar(50) ...
- oracle 嵌套游标慢,oracle 嵌套游标以及java,oracle的时间处理
oracle 嵌套游标以及java,oracle的时间处理 create or replace procedure test is ids VOD_CMS_OPERATION_REGION.id%ty ...
- mysql 游标 navigate_MySQL游标的概念介绍和游标的使用讲解
一.MySQL游标的概念 1.游标介绍 MySQL的游标(cursor)是一个重要的概念,通过查找资料与自己的理解,主要得出以下几点关于自己的理解. 有数据缓冲的思想:游标的设计是一种数据缓冲区的思想 ...
最新文章
- 努比亚红魔有人脸识别_魅族魅蓝6T、努比亚红魔Mars电竞手机、华为畅享10Plus对比...
- DbHelper数据操作类,DbProviderFactories
- 小项目--bank1
- mac os 安装 thrift
- 类如何调用自己的私有成员_企业如何快速获取自己的私有领域流量?
- 网络安全工程师必备浏览器插件
- win10 appdata文件夹在哪 隐藏文件夹appdata的打开方法
- 每月自评之一:2013年1月
- MyBatis入门到精通
- input不为空,且返回焦点
- 阿里云手机验证码获取接口【接口对接的时候要仔细把里面的参数换成自己的参数即可】
- Python 查看显存大小
- Zigbee HA 框架学习笔记
- PCI总线及发展历程(详细)总结
- Minio分布式集群部署(Swarm)
- 推荐:电脑蓝屏代码分析工具BlueScreenView简体中文版下载
- anaconda-navigaotr出现adding featured channels并无法正常打开_CodingPark编程公园
- 【20】WAV格式歌曲
- IP地址,域名,服务器
- 杰神之JAVA二维数组(案例:走迷宫)