MySql教程

关于MySQL储存过程中的游标cursor

本文主要是介绍关于MySQL储存过程中的游标cursor,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一张表SC
在这里插入图片描述
在储存过程中使用游标cursor,根据分数逐行更新rank。

DELIMITER &&
CREATE PROCEDURE ud()
BEGIN
    DECLARE vsno CHAR(9);
    DECLARE vcno CHAR(4);
    DECLARE vgrade INT(11); 
    DECLARE v_finished INT DEFAULT 0;
    DECLARE sc_cursor CURSOR FOR SELECT Sno,Cno,Grade FROM SC;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_finished = 1;
    OPEN sc_cursor;
    up:LOOP
    FETCH sc_cursor  INTO vsno,vcno,vgrade;
    IF v_finished = 1 THEN
    LEAVE up;
    END IF;
    IF vgrade < 60 THEN
    UPDATE SC SET `rank` = 'E' WHERE Sno = vsno AND Cno = vcno;
    ELSEIF vgrade < 70 THEN
    UPDATE SC SET `rank` = 'D' WHERE Sno = vsno AND Cno = vcno;
    ELSEIF vgrade < 80 THEN
    UPDATE SC SET `rank` = 'C' WHERE Sno = vsno AND Cno = vcno;
    ELSEIF vgrade < 90 THEN
    UPDATE SC SET `rank` = 'B' WHERE Sno = vsno AND Cno = vcno;
    ELSE 
    UPDATE SC SET `rank` = 'A' WHERE Sno = vsno AND Cno = vcno;
    END IF;
    END LOOP up;
    CLOSE sc_cursor;
END&&
call ud();
这篇关于关于MySQL储存过程中的游标cursor的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!