云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 实验六 存储过程的设计与应用

实验六 存储过程的设计与应用

  • 62 次阅读
  • 3 次下载
  • 2025/6/23 22:52:54

实验六 存储过程的设计与应用

实验1、[实验场景]:当学期末课程教学结束后,任课老师在考试后要将学生的成绩录入到“教学管理系统”中,在随后的日期中,任课教师还要经常查询自己任教课程班的学生成绩。

请以编码为“T080040401”的课程班为例,用存储过程实现任课教师的课程班成绩查询T-SQL语句。

图一 查询课程班的成绩

解决:

1、创建存储过程 [参考代码]:

表一 创建存储过程CourseClassGradeQuery

USE DB_TeachingMS GO CREATE PROCEDURE CourseClassGradeQuery AS SELECT TG.StuID,StuName,CommonScore,MiddleScore,LastScore,TotalScore FROM TB_Grade TG,TB_Student TS

2、执行(保存)存储过程

3、执行语句:EXEC CourseClassGradeQuery

拓展练习:在上述存储过程中引入一个参数,用来给存储过程传递【课

程班编码】,然后存储过程再根据传递来的【课程班编码】进行相关的学生成绩查询。请写出创建带【课程班编码】参数的存储过程的T-SQL语句。

实验2、[实验场景]:在某个班级新生记录添加的时候,学号不用手工输入,系统将统计出这个班级已有学生的最大学号,然后在其基础上做自动加1处理后插入到学生表中。插入学生记录的流程如图二所示。

1

请以班级编码为“050802”的“05软件(2)班”为例,用存储过程实现学号自增的学生记录插入功能。

1、查询出该班级最大的学号 2、判断是否存在?否新学号设为班级编码+'01' 是3、取出最大学号的后两位流水号,存入变量中 4、将后两位字符型流水 号转变为数值型,加转换为字符型 1后 5、判断字符型长度为1流水号前添加流水号长度? 字符'0'长度为26、将班级编码与新得的 两位流水号进行连接,得到新的学号 7、返回新学号

图二 插入学生记录的流程图

[参考代码]:

CREATE PROCEDURE AutoGetStuID @ClassID CHAR(6),@NewStuID CHAR(8) OUTPUT

AS

DECLARE @MaxStuID CHAR(8),@CharTwoStuID CHAR(2),@IntTwoStuID INT SET @MaxStuID =

(SELECT MAX(StuID) FROM TB_Student WHERE ClassID=@ClassID) IF @MaxStuID IS NULL

SET @NewStuID = @ClassID+'01' ELSE BEGIN

SET @CharTwoStuId = RTRIM(@MaxStuID,7,2)

SET @IntTwoStuID = CONVERT(INT,@CharTwoStuID)+1 SET @CharTwoStuID = CONVERT(CHAR,@IntTwoStuID) IF LEN(@CharTwoStuID) = 1

SET @CharTwoStuID='0'+@CharTwoStuID

2

ELSE

SET @NewStuID = @ClassID+@CharTwoStuID END

保存后,执行:

DECLARE @GetedStuID CHAR(8)

EXEC AutoGetStuID '050801',@GetedStuID OUTPUT SELECT @GetedStuID AS NewStuID

结果如图三所示:

图三 获取学生最大学号结果

实验3、[实验场景]:

课程班成绩录入系统后,由于系统记录的是学生的分数,而有的课程班的成绩需要用“优秀、良好、中等、及格和不及格”五个等第进行显示。等第划分的标准是:90分以上为“优秀”,80-89分为“良好”,70-79分为“中等”,60-69分为“及格”,60分以下为“不及格”。

请用带参数的存储过程实现不同课程班成绩的等第自动划分功能。结果如图四:

图四 课程班成绩的等第自动划分

[参考代码]:

USE DB_TeachingMS GO CREATE PROCEDURE GradeLevelSet @CourseClassID CHAR(10) AS

3

SELECT TG.StuID 学号,StuName 姓名,TotalScore 分数, CASE WHEN TotalScore<60 THEN '不及格' WHEN TotalScore>=60 AND TotalScore<70 THEN '及格' WHEN TotalScore>=70 AND TotalScore<80 THEN '中等' WHEN TotalScore>=80 AND TotalScore<90 THEN '良好' WHEN TotalScore>=90 AND TotalScore<=100 THEN '优秀' END AS '等第' FROM TB_Grade TG,TB_Student TS WHERE TG.StuID=TS.StuID AND CourseClassID=@CourseClassID ORDER BY TotalScore DESC

拓展练习:

如果从表“TB_CourseClass”中查询课程班信息时,要将选满标志【FullFlag】字段中的值“U”和“F”分别显示为“未满”和“已满”,如图五所示:请用简单格式CASE语句实现。

图五 拓展练习

4

搜索更多关于: 实验六 存储过程的设计与应用 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

实验六 存储过程的设计与应用 实验1、[实验场景]:当学期末课程教学结束后,任课老师在考试后要将学生的成绩录入到“教学管理系统”中,在随后的日期中,任课教师还要经常查询自己任教课程班的学生成绩。 请以编码为“T080040401”的课程班为例,用存储过程实现任课教师的课程班成绩查询T-SQL语句。 图一 查询课程班的成绩 解决: 1、创建存储过程 [参考代码]: 表一 创建存储过程CourseClassGradeQuery USE DB_TeachingMS GO CREATE PROCEDURE CourseClassGradeQuery AS SELECT TG.StuID,StuName,CommonScore,MiddleScore,LastS

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com