mysql中的游標怎么界說,怎么利用,把游標查詢的數據逐個處置。下面界說一個游標,把學生的成就加起來存入到總分的字段中。我寫的經驗對你進修mysql有幫忙的話,給我投票、點贊或者保藏!
新建一個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
在當前數據庫中成立一個存儲過程。
DELIMITER $$
CREATE
PROCEDURE `test`.`cj_zongfen`()
BEGIN
#過程代碼
END$$
DELIMITER ;
在過程中界說3個局部變量,把游標查詢成就存入到變量中。
DELIMITER $$
CREATE
PROCEDURE `test`.`cj_zongfen`()
BEGIN
DECLARE yw INT;#語文成就
DECLARE sx INT;#數學成就
DECLARE yy INT;#英語成就
DECLARE d INT;
END$$
DELIMITER ;
界說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;
把游標當前查詢的值存入到變量中,點竄表中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;
END WHILE;
保留存儲過程,執行call cj_zong分();
查看數據,每一個記實總分存入到zongfen字段中。
存儲過程完整代碼.
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;
FETCH zongfen_cursor INTO yw,sx,yy,d;
END WHILE;
END$$
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!