mysql数据库怎么使用游标

mysql中的游标怎么界说 , 怎么利用 , 把游标查询的数据逐个处置 。 下面界说一个游标 , 把学生的成就加起来存入到总分的字段中 。 我写的经验对你进修mysql有帮忙的话 , 给我投票、点赞或者保藏!
方式/
1新建一个cj表 , 输入数据 , zongfen为0 , 下面用游标来计较总分 , 而且更新cj表的zongfen字段 。
CREATE TABLE `cj` (  `cid` int(11) NOT NULL AUTO_INCREMENT,  `yuwen` int(11) NOT NULL,  `shuxue` int(11) NOT NULL,  `yingyu` int(11) NOT NULL,  `zongfen` int(11) NOT NULL,  PRIMARY KEY (`cid`),  KEY `zid` (`zongfen`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

mysql数据库怎么使用游标

文章插图

2在当前数据库中成立一个存储过程 。
DELIMITER $$
CREATE
    PROCEDURE `test`.`cj_zongfen`()
    BEGIN
                         #过程代码
    $$
DELIMITER ;

mysql数据库怎么使用游标

文章插图

3在过程中界说3个局部变量 , 把游标查询成就存入到变量中 。
DELIMITER $$
CREATE
    PROCEDURE `test`.`cj_zongfen`()
    BEGIN
DECLARE yw INT;#语文成就
DECLARE sx INT;#数学成就
DECLARE yy INT;#英语成就
DECLARE d INT;
    $$
DELIMITER ;

mysql数据库怎么使用游标

文章插图

4界说nf变量 , 当游标查询完毕后nf的值为false , 退出游标轮回 。
DECLARE nf BOOLEAN DEFAULT TRUE;
DECLARE zongfen_cursor CURSOR FOR  SELECT yuwen,shuxue,yingyu,cid FROM cj;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET nf=FALSE;
OPEN zongfen_cursor;

mysql数据库怎么使用游标

文章插图

5把游标当前查询的值存入到变量中 , 点窜表中zongfen的值 。
FETCH zongfen_cursor INTO yw,sx,yy,d;
WHILE nf DO
UPDATE cj SET zongfen=yw+sx+yy WHERE cid=d;
FETCH zongfen_cursor INTO yw,sx,yy,d;
WHILE;

mysql数据库怎么使用游标

文章插图

6保留存储过程 , 执行call cj_zong分;
查看数据 , 每一个记实总分存入到zongfen字段中 。

mysql数据库怎么使用游标

文章插图

7存储过程完整代码.
CREATE DEFINER=`root`@`localhost` PROCEDURE `cj_zongfen`()
BEGIN
DECLARE yw INT;#语文成就
DECLARE sx INT;#数学成就
DECLARE yy INT;#英语成就
DECLARE d INT;

DECLARE nf BOOLEAN DEFAULT TRUE;
DECLARE zongfen_cursor CURSOR FOR  SELECT yuwen,shuxue,yingyu,cid FROM cj;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET nf=FALSE;
OPEN zongfen_cursor;

FETCH zongfen_cursor INTO yw,sx,yy,d;
WHILE nf DO
UPDATE cj SET zongfen=yw+sx+yy WHERE cid=d;

推荐阅读