mysql存储过程实例

来源:互联网 发布:针织女套裙淘宝网 编辑:程序博客网 时间:2024/05/19 02:25

最近在复习mysql,顺便写博客记录一下吧

首先,来两个表把,学生用户表、班级表,我们要做的就是要根据学生的分数来对学生分班(普通班和重点班)
数据结构:


两个表数据:

 user_info class_info

现在我们要把分数score大于等于 85分的放入重点班,其余加入普通班
先新建存储过程(这里直接用navicat新建了)
BEGIN-- tips:顺序就是变量定义-游标定义-处理程序-- 定义 存放获取到的分数的参数 DECLARE t_tcore FLOAT DEFAULT 0; -- 定义 存放获取到的用户id 的参数 DECLARE t_user_id INT DEFAULT 0;-- 定义存放班级id的变量DECLARE t_class_id INT DEFAULT 0;-- 定义游标中是否还有记录的变量DECLARE no_more_record INT DEFAULT 0;-- 定义游标DECLARE mcur CURSOR FOR SELECT user_id,user_score FROM user_info;-- 当游标中没有记录的时候赋值 no_more_record 为 1DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_record = 1;-- 打开游标OPEN mcur;-- 循环(常用的有 loop、while、repeat 这里使用LOOP循环)mloop: LOOP-- 从游标中获取一条记录并把值存入之前定义好的变量中FETCH mcur into t_user_id,t_tcore;-- 循环到游标中没有记录时跳出循环(也就是no_more_record = 1的时候)IF no_more_record != 0 THEN LEAVE mloop; END IF;-- 根据分苏的高低得到t_class_id(1:普通班,2:重点班)IF t_tcore >= 85 THEN SET t_class_id = 2;END IF;IF t_tcore < 85 THEN SET t_class_id = 1;END IF;-- 执行更新UPDATE user_info SET class_id = t_class_id WHERE user_id = t_user_id;-- 结束循环END LOOP mloop;-- 关闭游标CLOSE mcur;END
运行存储过程:
查看结果:学生已经被分班了



1 0
原创粉丝点击