书上照着打在navicat运行过不了
如下则可:(在navicat里)
#创建存储过程,给定学生学号,计算学生的平均学分绩点
delimiter //
CREATE PROCEDURE compGPA(
IN inSno char(10),
OUT outGPA float)
BEGIN
DECLARE courseGPA double DEFAULT 0;
DECLARE totalGPA int DEFAULT 0;
DECLARE totalCredit int;
DECLARE grade int;
DECLARE credit int;
DECLARE mycursor CURSOR FOR
SELECT credit,Grade FROM sct,Course
WHERE Student_no=inSno and sct.course_no=Course.`no`;
OPEN mycursor;
loop
FETCH mycursor INTO credit,grade;
IF grade BETWEEN 90 AND 100 THEN set courseGPA:=4.0;
ELSEIF grade BETWEEN 80 AND 89 THEN set courseGPA:=3.0;
ELSEIF grade BETWEEN 70 AND 72 THEN set courseGPA:=2.0;
ELSEIF grade BETWEEN 60 AND 69 THEN set courseGPA:=1.0;
ELSE set courseGPA:=0;
END IF;
set totalGPA:=totalGPA+courseGPA*credit;
set totalCredit:=totalCredit+credit;
END loop;
CLOSE mycursor;
set outGPA:=totalGPA/totalCredit;
END //
delimiter ;