-- 建立如下的存储过程（基于前面实验建立的表和插入的数据，并为每个存储过程设计返回的状态值）：
-- 1．按要求设计完成如下功能的存储过程。
-- （1）查询平均分数在x到y范围内的学生信息。 该存储过程有两个参数：要求查询的学生信息包括学号、姓名、院系名称和平均成绩。
CREATE PROCEDURE quire_stu_between
    @x INT,
    @y INT
AS
BEGIN
    SELECT 学生表.学号, 学生表.姓名, 院系表.名称, 学生表.平均成绩
    FROM 学生表
    JOIN 院系表 ON 学生表.院系编号 = 院系表.院系
    WHERE 学生表.平均成绩 BETWEEN @x AND @y;
END;

-- （2）更新操作，以学号、课程编号和考试成绩作参数更新指定学生和课程的考试成绩，并返回该学生的平均成绩。
CREATE PROCEDURE update_stu_grade
		@学号 VARCHAR(8),
		@课程编号 VARCHAR(8),
		@考试成绩 SMALLINT
AS
BEGIN
		UPDATE 选课表
		SET 成绩=@考试成绩
		WHERE 学号=@学号 AND 课程编号=@课程编号;
		
		SELECT 平均成绩 FROM 学生表
		WHERE 学号=@学号;
END;

-- 2．在客户端以存储过程和输入SQL语句的方式分别执行相同的查询或操作，比较使用和不使用存储过程的区别。
-- 使用存储过程
EXEC quire_stu_between @x=85,@y=90;
-- 使用SQL查询
SELECT 学生表.学号, 学生表.姓名, 院系表.名称, 学生表.平均成绩
    FROM 学生表
    JOIN 院系表 ON 学生表.院系编号 = 院系表.院系
    WHERE 学生表.平均成绩 BETWEEN 85 AND 90;