数据库原理及应用实验报告 6_数据库原理及应用实验
数据库原理及应用实验报告 6由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据库原理及应用实验”。
实验成绩
《数据库系统原理及应用》
实 验 报 告 六
专业班级:
计算机科学与技术
学
号:
201116910233
姓
名:
范晓曈
指导教师:
苏小玲
2013年
月
日 实验六名称:
SQL Server存储过程
一、实验内容及要求
1.使用输入参数存储过程的创建和执行
任务1:查询学生的学号、姓名、选修的课程号、课程名、课程学分,将学生所在系作为输入参数,默认值为“软件工程系”。执行此存储过程,并分别指定一些不同的输入参数值,查看执行过程。
2.修改视图
任务1:查询指定系的男生人数,其中系为输入参数,人数为输出参数。执行此存储过程,并分别指定一些不同的输入参数值,查看执行过程。
任务2:查询指定学生(姓名)在指定学期的选课门数和考试平均成绩,要求姓名和学期为输入参数,选课门数和平均成绩用输出参数返回,平均成绩保留到小数点后两位。
3.使用返回代码存储过程的创建和执行
任务1:查询指定学生(学号)的选课门数。如果指定学生不存在,则返回代码1;如果指定的学生没有选课,则返回代码2;如果指定学生有选课,则返回代码0,并用输出参数返回该学生的选课门数。
4.使用实现对数据库修改、删除和插入操作的存储过程创建和执行
任务1:删除指定学生(学号)的修课,如果指定的学生不存在,则显示提示信息“没有指定学生”;如果指定的学生没有选课,则显示提示信息“该学生没有选课”。学号为输入参数。
任务2:修改指定课程的开课学期。输入参数为:课程号和修改后的开课学期。
任务3:在course表中插入一行数据,课程号、课程名、学分、开课学期均为输入参数。课程号为C100、课程名为操作系统、学分为
4、开课学期为4,开课学期的默认值为3。如果学分大于10或者小于1,则不插入数据,并显示提示信息“学分为1~10之间的整数”。
二、实验目的掌握存储过程的创建和执行;掌握存储过程中输入参数和输出参数的设置和使用方法。
三、实验步骤及运行结果
1.使用输入参数存储过程的创建和执行
任务1:查询学生的学号、姓名、选修的课程号、课程名、课程学分,将学生所在系作为输入参数,默认值为“软件工程系”。执行此存储过程,并分别指定一些不同的输入参数值,查看执行过程。
create procedure p_studentdept @dept char(20)='计科' as select s.sno,s.sname,c.cno,cname,s.credit from student s inner join sc on s.sno=sc.sno inner join Course c
on c.cno=sc.cno where sdept=@dept
2.修改视图
任务1:查询指定系的男生人数,其中系为输入参数,人数为输出参数。执行此存储过程,并分别指定一些不同的输入参数值,查看执行过程。
create procedure p_numberofBoy @dept char(20),@boynumber int output as select @boynumber=COUNT(*)from Student
where Ssex='男' and sdept=@dept
declare @boynumber int exec p_numberofBoy '计科' ,@boynumber output print @boynumber
declare @boynumber int exec p_numberofBoy '电信' ,@boynumber output print @boynumber
任务2:查询指定学生(姓名)在指定学期的选课门数和考试平均成绩,要求姓名和学期为输入参数,选课门数和平均成绩用输出参数返回,平均成绩保留到小数点后两位。
create proc p_studentInfo @name char(20),@semester int,@count_xk int output,@avg_core float output as select @count_xk=count(c.cno),@avg_core=Avg(core)from Student s join SC
on s.Sno =SC.Sno join Course c
on SC.Cno =c.Cno where s.Sname=@name and c.Semester =@semester
declare @count_xk int,@avg_grade float,@avg_core decimal exec p_studentInfo '范晓曈',2,@count_xk output,@avg_core output select @count_xk as 选课门数,@avg_core as 平均成绩
3.使用返回代码存储过程的创建和执行
任务1:查询指定学生(学号)的选课门数。如果指定学生不存在,则返回代码1;如果指定的学生没有选课,则返回代码2;如果指定学生有选课,则返回代码0,并用输出参数返回该学生的选课门数。
create proc p_countxk @number decimal,@xk_number decimal output as if not exists(select Sno from Student where Sno=@number)return 1 else if not exists(select Sno from SC where Sno=@number)return 2 else begin select @xk_number=COUNT(sc.cno)from SC where Sno =@number return 0 End
declare @xk_number1 int exec p_countxk 201116910233,@xk_number1 output print @xk_number1
4.使用实现对数据库修改、删除和插入操作的存储过程创建和执行
任务1:删除指定学生(学号)的修课,如果指定的学生不存在,则显示提示信息“没有指定学生”;如果指定的学生没有选课,则显示提示信息“该学生没有选课”。学号为输入参数。
create proc p_delete @id numeric as if not exists(select * from Student where Sno=@id)return 1 if not exists(select * from SC where SC.Sno=@id)return 2 else return 0
declare @id numeric,@ret int exec @ret=p_delete 201116910232 if @ret =1 print '没有该学生!' if @ret =2 print '该学生没有选课!' if @ret =0 delete from SC where Sno=201116910232
declare @id numeric,@ret int exec @ret=p_delete 201116910222 if @ret =1 print '没有该学生!' if @ret =2 print '该学生没有选课!' if @ret =0 delete from SC where Sno=201116910222
declare @id numeric,@ret int exec @ret=p_delete 201116910211 if @ret =1 print '没有该学生!' if @ret =2 print '该学生没有选课!' if @ret =0 delete from SC where Sno=201116910211
任务2:修改指定课程的开课学期。输入参数为:课程号和修改后的开课学期。
create proc p_alter @kc char(20),@xq int as update course set semester=@xq where cno=@kc declare @kc char(20),@xq int exec p_alter 'C003',3
修改前:
修改后:
任务3:在course表中插入一行数据,课程号、课程名、学分、开课学期均为输入参数。课程号为C100、课程名为操作系统、学分为
4、开课学期为4,开课学期的默认值为3。如果学分大于10或者小于1,则不插入数据,并显示提示信息“学分为1~10之间的整数”。
create proc p_insert @kc_id varchar(20),@kc_name varchar(20),@xf decimal , @xq int as if(@xf >= 1 and @xf
end else print
'学分要在1~10之间!!'
declare @kc_id varchar(20),@kc_name varchar(20),@xf decimal,@xq int exec p_insert 'C006','操作系统',3.0,6
declare @kc_id char(20),@kc_name char(20),@xf decimal,@xq int exec p_insert 'C007','毛概',11.0,4
四、实验心得
在这次实验中,我明白了,存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度,存储过程一般用来完成数据查询和数据处理操作。
无论什么时候执行存储过程,总要返回一个结果码,用以指示存储过程的执行状态。如果存储过程执行成功,返回的结果码是0;如果存储过程执行失败,返回的结果码一般是一个负数,它和失败的类型有关。我们在创建存储过程时,也可以定义自己的状态码和错误信息。
通过这次实验,让我深刻了解了数据库的功能,觉得它功能非常的强大,掌握存储过程的创建与执行,熟悉存储过程与批处理的区别。掌握带参数的存储过程的创建与执行。
南 京 晓 庄 学 院《数据库原理与应用》课程实验报告实验二 数据库的创建、管理、备份及还原实验 所在院(系): 数学与信息技术学院 班级: 学号: 姓名: 1.实验目的(1) 掌握分别......
南 京 晓 庄 学 院《数据库原理与应用》课程实验报告实验一 SQL Server 2005常用服务与实用工具实验所在院(系): 数学与信息技术学院 班级: 学号: 姓名: 1.实验目的(1) 了解......
上海应用技术学院《数据库原理及应用》课程实验报告计算机科学与信息工程系·2007年编制计算机科学与信息工程系·2007年编制注:空间不够,可以增加页码。计算机科学与信息工程......
《数据库原理及应用实验》姓名:徐毅民学号: 153299实验报告班级:网络151 实验1数据库定义与操作语言实验实验1.4数据更新实验1、实验目的熟悉数据库的数据更新操作,能够使用SQ......
广西科技大学理学院《数据库原理》上机实验报告实验序号与实验名称:实验九:用户管理和权限管理姓名:薛亚妮学号:201000901045专业班级:信计101实验日期:2012年 12月15日一、实验目......
