2022年实验六使用T-SQL编写存储过程访问数据库 3.pdf

上传人:C****o 文档编号:34263441 上传时间:2022-08-15 格式:PDF 页数:5 大小:43.57KB
返回 下载 相关 举报
2022年实验六使用T-SQL编写存储过程访问数据库 3.pdf_第1页
第1页 / 共5页
2022年实验六使用T-SQL编写存储过程访问数据库 3.pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《2022年实验六使用T-SQL编写存储过程访问数据库 3.pdf》由会员分享,可在线阅读,更多相关《2022年实验六使用T-SQL编写存储过程访问数据库 3.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 一 实验目的1. 理解存储过程的概念、使用方式;2. 熟悉使用 T-SQL编写存储过程来进行数据库应用程序的设计。二 实验工具 SQL Server 2005 利用 SQL Server 2005 SSMS 及其 SQL 查询编辑器,使用T-SQL 编写存储过程。三 实验内容和要求建立学生 -课程数据库, 其中包含学生表 Student(Sno,Sname,Ssex,Sage,Sdept)、课程表: Course(Cno,Cname,Cpno,Ccredit) 和学生选课表: SC(Sno,Cno,Grade) ;编写相应的存储过程,完成下面的功能:(1)编写一个存储过程,可以查询指定系的

2、学生的选课信息,列出学号、姓名、所在系、课程名和成绩等内容。调用该存储过程,测试执行结果。(2)编写一个存储过程,返回指定课程的平均分。调用该存储过程,测试执行结果。(3)编写一个存储过程,可以查询指定系指定成绩等级的学生的选课信息,列出学号、姓名、所在系、课程名和成绩等内容。调用该存储过程,测试执行结果。 (成绩等级为优、良、中、及格、不及格,其中成绩在90 分到 100 分之间为优 ,在 80 分到 89 分之间为良,在 70 分到 79 分之间为中,在 60 分到69 分之间为及格,在 0 分到 59分之间为不及格。 )要求:提交创建存储过程的SQL 脚本,并标识必要的注释。保证程序能够

3、正确编译和运行,并有相应的测试代码。四 实验报告4.1 实验环境:4.2 实验内容与完成情况:createdatabase zhangsy -Drop database zhangsy go use zhangsy - 创建三个表,分别是学生表,课程表和学生选课表;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 2 CREATETABLE Student ( Sno char( 10 )PRIMARYKEY, Sname cha

4、r( 10 )NOT NULL, Ssex char( 2)CHECK ( Ssex = 男OR Ssex = 女 ), Sage tinyintCHECK ( Sage = 15 AND Sage 0 ), Period intCHECK ( Period 0 ), PRIMARYKEY( Cno )go CREATETABLE SC ( Sno char ( 10 )NOT NULL, Cno char( 4)NOT NULL, Grade tinyint, CHECK ( Grade = 0 and Grade = 100), PRIMARYKEY ( Sno , Cno ), FORE

5、IGNKEY ( Sno )REFERENCES Student ( Sno ), FOREIGNKEY ( Cno )REFERENCES Course ( Cno ) go - 分别向这三个表中插入数据;Insertinto student values( 2006010101, 张扬 , 男 , 19 , default) Insertinto student values( 2006010102, 李勇 , 男 , 21 , default) Insertinto student values( 2006010103, 王小 , 男 , 20 , 数学系 ) Insertinto st

6、udent values( 2006010104, 赵娣 , 女 , 18 , 外语系 ) Insertinto student values( 2006010105, 刘柳 , 女 , 19 , 外语系 ) go update student set sname= 王小 where sno=2006010103 select*from student go Insertinto Course values( J001, TC, 2, 32 ) Insertinto Course values( J002, VB, 2, 32 ) 名师资料总结 - - -精品资料欢迎下载 - - - - -

7、- - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 3 Insertinto Course values( J003, VC, 2, 32 ) Insertinto Course values( J004, 计算机文化基础 , 2, 32 ) go select*from course go Insertinto SC values( 2006010101, J001, 85 ) Insertinto SC values( 2006010101, J002, 80 ) Insertinto S

8、C values( 2006010101, J003, 78 ) Insertinto SC values( 2006010101, J004, 90 ) Insertinto SC values( 2006010102, J001, 75 ) Insertinto SC values( 2006010102, J002, 60 ) Insertinto SC values( 2006010102, J003, 77 ) Insertinto SC values( 2006010102, J004, 92 ) Insertinto SC values( 2006010103, J001, 85

9、 ) Insertinto SC values( 2006010103, J003, 90 ) Insertinto SC values( 2006010104, J004, 89 ) Insertinto SC values( 2006010105, J004, 76 ) Go select*from sc Go - 查询课程的平均分createprocedure sp_avggrade cname varchar( 20 )=TC, avg intoutput as select avg =avg ( grade)from sc , course where sc . cno =cours

10、e. cno and course. cname =cname if avg =0 print 没有学生选此门课 else return avg go Declare avgGrade int EXECUTE sp_avggrade avg=avgGrade Output PRINT avgGrade Declare avgGrade int EXECUTE sp_avggrade VB, avg=avgGrade Output PRINT avgGrade 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -

11、- - - - - 第 3 页,共 5 页 - - - - - - - - - 4 Declare avgGrade int EXECUTE sp_avggrade VC, avg=avgGrade Output PRINT avgGrade Declare avgGrade int EXECUTE sp_avggrade 计算机文化基础 , avg =avgGrade Output PRINT avgGrade - 查询指定系的学生的学号,姓名,所在系,课程名和成绩CreateProcedure sp_DispSC_Sdept sdept varchar( 20 )= 计算机系 AS Sel

12、ect S . sno , S . sname , S . Sdept, C . Cname , SC . grade From Student S LeftJoin SC on S . sno =SC. sno LeftJoin Course C on SC . Cno =C. cno where Sdept=sdept Go EXECUTE sp_DispSC_Sdept EXECUTE sp_DispSC_Sdept 信息系 EXECUTE sp_DispSC_Sdept sdept= 数学系 10 - 3 -查询指定系,指定成绩等级的学生的学号,姓名,所在系,课程名和成绩CreateP

13、rocedure sp_DispSC_Dept_Level sdept varchar( 20 )= 计算机系 , GradeLevel varchar( 6) AS Declare SQLText varchar( 200 ), GradeStr varchar( 30 ) Set SQLText=Select S.sno, S.sname, S.Sdept, C.Cname, SC.grade From Student S Left Join SC on S.sno=SC.sno Left Join Course C on SC.Cno=C.cno Set GradeStr= CaseWh

14、en GradeLevel= 优thenbetween 90 And 100 When GradeLevel= 良thenbetween 80 And 89 When GradeLevel= 中thenbetween 70 And 79 When GradeLevel= 及格 thenbetween 60 And 69 When GradeLevel= 不及格 thenbetween 0 And 59 When GradeLevel ISNULLthenIS NULL ElseLevelErrorend IF GradeStr=LevelErrorprint 错误:输入的成绩等级不符合要求!

15、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - 5 Else Execute( SQLText + where Sdept=+sdept + And Grade +GradeStr) GO EXECUTE sp_DispSC_Dept_Level GradeLevel= 优 Execute SP_DispSC_Dept_Level 信息系 , 优 EXECUTE sp_DispSC_Dept_Level default, GradeLevel= 优4.3 出现的问题:在调用查询课程的平均分的存储的时候出现了问题,提示avg 没有赋值4.4 解决方案(列出遇到的问题和解决办法,列出没有解决的问题):命名一个对象 avgGrade把avg传给它就可以得到结果。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁