来源:自学PHP网 时间:2015-04-16 10:51 作者: 阅读:次
[导读] 一、表学生表CREATE TABLE `t_student` ( `stuNum` int(11) NOT NULL auto_increment, `stuName` varchar(20) default NULL, `birthday` date default NULL, PRIMARY K...
一、表
学生表 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); |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com