1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
CREATE PROCEDURE process(@sno CHAR(7), @avg NUMERIC(6, 2) OUTPUT) AS BEGIN DECLARE @sName VARCHAR(20), @cName VARCHAR(20) DECLARE @score TINYINT, @sum INT, @count TINYINT SELECT @sum = 0.0, @count = 0.0
DECLARE cur CURSOR FOR SELECT studentName, courseName, score FROM Score a, Student b, Course c WHERE b.studentNo = @sNo AND a.studentNo = b.studentNo AND a.courseNo = c.courseNo OPEN cur FETCH cur INTO @sName, @cName, @score WHILE (@@FETCH_STATUS = 0) BEGIN SELECT @sName, @cName, @score SET @sum = @sum + @score SET @count = @count + 1 FETCH cur INTO @sName, @cName, @score END
CLOSE cur DEALLOCATE cur
IF @count = 0 SET @avg = 0 ELSE SET @avg = @sum / @count END
|