实验六使用TSQL编写存储过程访问数据库.doc

上传人:仙人指路1688 文档编号:2392209 上传时间:2023-02-17 格式:DOC 页数:5 大小:35KB
返回 下载 相关 举报
实验六使用TSQL编写存储过程访问数据库.doc_第1页
第1页 / 共5页
实验六使用TSQL编写存储过程访问数据库.doc_第2页
第2页 / 共5页
实验六使用TSQL编写存储过程访问数据库.doc_第3页
第3页 / 共5页
实验六使用TSQL编写存储过程访问数据库.doc_第4页
第4页 / 共5页
实验六使用TSQL编写存储过程访问数据库.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《实验六使用TSQL编写存储过程访问数据库.doc》由会员分享,可在线阅读,更多相关《实验六使用TSQL编写存储过程访问数据库.doc(5页珍藏版)》请在三一办公上搜索。

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脚本,并标识必要的注释。保证程序能够正确编译和运行,并有相应的测试代码。四 实验报告4.1 实验环境:4.2

3、 实验内容与完成情况: create database zhangsy-Drop database zhangsygouse zhangsy-创建三个表,分别是学生表,课程表和学生选课表;CREATE TABLE Student ( Sno char ( 10 ) PRIMARY KEY, Sname char ( 10 ) NOT NULL, Ssex char (2) CHECK (Ssex = 男 OR Ssex = 女), Sage tinyint CHECK (Sage = 15 AND Sage 0), Period int CHECK (Period 0), PRIMARY KE

4、Y(Cno) ) goCREATE TABLE SC ( Sno char(10) NOT NULL, Cno char(4) NOT NULL, Grade tinyint, CHECK (Grade = 0 and Grade = 100), PRIMARY KEY ( Sno, Cno ), FOREIGN KEY ( Sno ) REFERENCES Student ( Sno ), FOREIGN KEY ( Cno ) REFERENCES Course ( Cno ) )go-分别向这三个表中插入数据;Insert into student values(2006010101,张

5、扬,男,19,default)Insert into student values(2006010102,李勇,男,21,default)Insert into student values(2006010103,王小,男,20,数学系)Insert into student values(2006010104,赵娣,女,18,外语系)Insert into student values(2006010105,刘柳,女,19,外语系)goupdate student set sname=王小 where sno=2006010103select * from studentgoInsert i

6、nto Course values(J001,TC,2,32)Insert into Course values(J002,VB,2,32)Insert into Course values(J003,VC,2,32)Insert into Course values(J004,计算机文化基础,2,32)goselect * from coursegoInsert into SC values(2006010101,J001,85)Insert into SC values(2006010101,J002,80)Insert into SC values(2006010101,J003,78)

7、Insert into SC values(2006010101,J004,90)Insert into SC values(2006010102,J001,75)Insert into SC values(2006010102,J002,60)Insert into SC values(2006010102,J003,77)Insert into SC values(2006010102,J004,92)Insert into SC values(2006010103,J001,85)Insert into SC values(2006010103,J003,90)Insert into S

8、C values(2006010104,J004,89)Insert into SC values(2006010105,J004,76)Goselect * from scGo-查询课程的平均分create procedure sp_avggrade cname varchar(20) = TC, avg int outputas select avg=avg(grade) from sc,course where o=o and ame =cname if avg=0 print 没有学生选此门课 else return avggoDeclare avgGrade intEXECUTE s

9、p_avggrade avg=avgGrade OutputPRINT avgGradeDeclare avgGrade intEXECUTE sp_avggrade VB,avg=avgGrade OutputPRINT avgGradeDeclare avgGrade intEXECUTE sp_avggrade VC,avg=avgGrade OutputPRINT avgGradeDeclare avgGrade intEXECUTE sp_avggrade 计算机文化基础,avg=avgGrade OutputPRINT avgGrade-查询指定系的学生的学号,姓名,所在系,课程名

10、和成绩Create Procedure sp_DispSC_Sdept sdept varchar(20)=计算机系ASSelect 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 where Sdept=sdeptGoEXECUTE sp_DispSC_Sdept EXECUTE sp_DispSC_Sdept 信息系EXECUTE sp_DispSC_Sdept sdept=数学系10-3-查询指

11、定系,指定成绩等级的学生的学号,姓名,所在系,课程名和成绩Create Procedure sp_DispSC_Dept_Level sdept varchar(20)=计算机系,GradeLevel varchar(6)ASDeclare 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.c

12、noSet GradeStr= Case When GradeLevel=优 then between 90 And 100When GradeLevel=良 then between 80 And 89When GradeLevel=中 then between 70 And 79When GradeLevel=及格 then between 60 And 69When GradeLevel=不及格 then between 0 And 59When GradeLevel IS NULL then IS NULLElse LevelError endIF GradeStr=LevelErro

13、r print 错误:输入的成绩等级不符合要求!Else Execute(SQLText+ where Sdept=+sdept + And Grade +GradeStr)GOEXECUTE sp_DispSC_Dept_Level GradeLevel=优Execute SP_DispSC_Dept_Level 信息系,优EXECUTE sp_DispSC_Dept_Level default, GradeLevel=优 4.3 出现的问题:在调用查询课程的平均分的存储的时候出现了问题,提示avg没有赋值4.4 解决方案(列出遇到的问题和解决办法,列出没有解决的问题):命名一个对象avgGrade把avg传给它就可以得到结果。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号