Mysql存储过程给变量赋值的几种方法实践
BEGIN
DECLARE v_request_count INT; #申请次数
DECLARE v_plan_count INT; #安排次数
DECLARE v_learn_count INT; #学习次数
DECLARE v_learned_count INT; #已经学习次数
DECLARE v_pass_count INT; #通过次数 DECLARE v_cid INT;
DECLARE v_course_id INT; DECLARE stop INT DEFAULT 0; /* 终止标记 */
DECLARE cur CURSOR FOR (SELECT cid, course_id FROM lms_company_course); DECLARE CONTINUE HANDLER FOR SQLSTATE '' SET stop = 1; OPEN cur;
FETCH cur INTO v_cid, v_course_id;
WHILE stop <> 1 DO #申请次数
SELECT @v_request_count:=COUNT(*) FROM lms_course_request WHERE cid=v_cid AND course_id=v_course_id; #安排次数
SELECT COUNT(*) INTO @v_plan_count FROM lms_student_course_relation WHERE cid=v_cid AND course_id=v_course_id AND type=2; #学习次数
SELECT COUNT(*) INTO v_learn_count FROM lms_student_course_relation WHERE cid=v_cid AND course_id=v_course_id; #已经学习次数
SET v_learned_count=(SELECT COUNT(*) FROM lms_student_course_relation WHERE cid=v_cid AND course_id=v_course_id AND progress=100); #企业课后测试通过率、通过次数
SELECT @qualified_rate:=qualified_rate FROM lms_company_setting WHERE cid = v_cid;
SET v_pass_count:=(SELECT COUNT(*) FROM lms_student_course_relation WHERE cid=v_cid AND course_id=v_course_id AND review_test_score>=@qualified_rate); #更新数据
UPDATE lms_company_course SET request_count=@v_request_count, plan_count=@v_plan_count, learn_count=v_learn_count,
learned_count=v_learned_count, pass_count=v_pass_count
WHERE cid=v_cid AND course_id=v_course_id; FETCH cur INTO v_cid, v_course_id;
END WHILE;
CLOSE cur;
END
小结:
1、mysql存储过程变量可以先定义,也可以过程中@变量动态定义
2、mysql存储过程游标必须定义在存储过程最前端
Mysql存储过程给变量赋值的几种方法实践的更多相关文章
- mysql 变量赋值的三种方法
mysql中变量不用事前申明,在用的时候直接用“@变量名”使用就可以了.第一种用法:set @num=1; 或set @num:=1; //这里要使用变量来保存数据,直接使用@num变量第二种用法:s ...
- Mysql存储过程查询结果赋值到变量的方法
Mysql存储过程查询结果赋值到变量的方法 把查询结果赋值到变量,大部分情况下使用游标来完成,但是如果明确知道查询结果只有一行(例如统计记录的数量,某个字段求和等),其实可以使用set或into的 ...
- MySQL 存储过程的变量
MySQL 存储过程的变量 变量是一个命名数据对象,变量的值可以在存储过程执行期间更改.我们通常使用存储过程中的变量来保存直接/间接结果. 这些变量是存储过程的本地变量. 注意:变量必须先声明后,才 ...
- python变量和变量赋值的几种形式
动态类型的语言 python是动态类型的语言,不需要声明变量的类型. 实际上,python中的变量仅仅只是用来保存一个数据对象的地址.无论是什么数据对象,在内存中创建好数据对象之后,都只是把它的地址保 ...
- MYSQL获取自增ID的四种方法
MYSQL获取自增ID的四种方法 1. select max(id) from tablename 2.SELECT LAST_INSERT_ID() 函数 LAST_INSERT_ID 是与tabl ...
- [SQL]SqL给局部变量赋值有两种方法
给局部变量赋值有两种方法: .SET @variable_name=value .SELECT @variable_name=value 两者的区别:SET赋值语句一般用于赋给变量一个指定的常量,SE ...
- 转载:(Mac)在bash和zsh配置环境变量path的几种方法
参考文献 老习惯,列出本文参考或引用或转载的文档和博客,致以崇高的敬意,感兴趣的可以去看看 1.http://postgresapp.com/ 2.http://postgresapp.com/doc ...
- 两个变量交换的四种方法(Java) 七种方法(JS)
两个变量交换的四种方法(Java) 对于两种变量的交换,我发现四种方法,下面我用Java来演示一下. 1.利用第三个变量交换数值,简单的方法. (代码演示一下) 1 class TestEV 2 ...
- DBS-MySQL:MYSQL获取自增ID的四种方法
ylbtech-DBS-MySQL:MYSQL获取自增ID的四种方法 1.返回顶部 1. 1. select max(id) from tablename 2.SELECT LAST_INSERT_I ...
随机推荐
- 博学谷-数据分析matplotlib
博学谷-数据分析 python数学学科的基础 机器学习课程的基础 1.1 介绍 1.2 jupyter和conda 1.3 matplotlib from matplotlib import pypl ...
- 设计模式基础--Java接口和抽象类
最近在看设计模式,感觉需要先好好区分下抽象类和接口. 一.抽象类 <Java编程思想>中这样定义:包含抽象方法的类叫做抽象类. 解释: 1.包含,说明抽象类中可以有其他的具体方法. 2.因 ...
- tcl之变量-数组array
- myeclipse10.5 crack(2012-12-27-bd 写的日志迁移
首先去网上下一个破解文件如图: 解压过后打开的文件夹如图: 再打开crack文件夹如图: 运行run.bat如果点击它没反应就是你没有安装jdk,它如果运行就如图所示: 到这一步就在第一个方框user ...
- 22.VUE学习之-replice删除当前评论条数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python3 提成计算
题目 企业发放的奖金根据利润提成. 利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%: 20万到4 ...
- #3 working with data stored in files && securing your application
This chapter reveals that you can use files and databases together to build PHP application that waa ...
- linux系统下单节点hadoop2的配置
Jdk安装: jdk-7u45-linux-x64.gz cp jdk-7u45-linux-x64.gz /usr/java/ cd /usr/java/ tar -zxvf jdk-7u45-li ...
- C++ 11 从C++ primer第五版的学习笔记
1. auto (page107) auto 推断会忽略const const int ci = i, & cr = ci; auto b = ci; // b is an int (to ...
- HDU 3368 Reversi
http://acm.hdu.edu.cn/showproblem.php?pid=3368 题意:模拟黑白棋,下一步黑手最大可以转化多少个白旗 分析:暴力 原先的思路是找到D然后遍历其八个方向,直到 ...