码迷,mamicode.com
首页 > 数据库 > 详细

Mysql存储过程中使用cursor

时间:2014-06-11 00:22:53      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:style   color   strong   使用   数据   set   

一、表
学生表
CREATE TABLE `t_student` (
   `stuNum` int(11) NOT NULL auto_increment,
   `stuName` varchar(20) default NULL,
   `birthday` date default NULL,
   PRIMARY KEY  (`stuNum`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

学生分数表
CREATE TABLE `t_stu_score` (
   `id` int(11) NOT NULL auto_increment,
   `stuNum` int(11) default NULL,
   `score` decimal(6,2) default NULL,
   PRIMARY KEY  (`id`),
   KEY `FK_t_stu_score` (`stuNum`),
   CONSTRAINT `FK_t_stu_score` FOREIGN KEY (`stuNum`) REFERENCES `t_student` (`stuNum`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

学生详细表
CREATE TABLE `t_stu_detail` (
   `id` int(11) NOT NULL auto_increment,
   `stuName` varchar(20) default NULL,
   `score` decimal(6,2) default NULL,
   PRIMARY KEY  (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

将t_Student和t_stu_score表中满足一定条件的数据插入到t_stu_detail中。


二、过程
DELIMITER &&
 CREATE PROCEDURE proc_AddStuDetail( IN p_score DECIMAL(6,2) )
  BEGIN
DECLARE vstuNum INT;
DECLARE vstuName VARCHAR(20);
DECLARE vbirthday DATE;
DECLARE vscore DECIMAL(6,2);
DECLARE done INT;

-- 定义游标
DECLARE stuCursor CURSOR
FOR
SELECT stuNum,stuName,birthday FROM t_Student;

-- 定义结束标记
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

-- 打开游标
OPEN stuCursor;

-- 循环
stuLoop:LOOP
-- 取游标中的数据
FETCH stuCursor INTO vstuNum,vstuName,vbirthday;
IF done = 1 THEN
LEAVE stuLoop;
END IF;

IF DATE(vbirthday) >= ‘1990-03-01‘ THEN
SELECT score INTO vscore FROM t_stu_score WHERE stuNum = vstuNum;
IF vscore >= p_score THEN
INSERT INTO t_stu_detail VALUES(NULL,vstuNum,vscore);
END IF;
END IF;
END LOOP stuLoop;

-- 关闭游标
CLOSE stuCursor;
  END
&&
DELIMITER ;

三、调用过程
CALL proc_AddStuDetail(86);

Mysql存储过程中使用cursor,布布扣,bubuko.com

Mysql存储过程中使用cursor

标签:style   color   strong   使用   数据   set   

原文地址:http://blog.csdn.net/woshixuye/article/details/29368215

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!