diff --git a/README.MD b/README.MD index 40f9a53..51d175a 100644 --- a/README.MD +++ b/README.MD @@ -36,6 +36,8 @@ - [实验十三](实验十三.sql) +- [实验十四](实验十四.sql) + ### 课后作业📖 [课后作业](课后作业/) diff --git a/实验十四.sql b/实验十四.sql new file mode 100644 index 0000000..af01602 --- /dev/null +++ b/实验十四.sql @@ -0,0 +1,37 @@ +-- 建立如下的存储过程(基于前面实验建立的表和插入的数据,并为每个存储过程设计返回的状态值): +-- 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; \ No newline at end of file