数据库原理及应用实验报告 6_数据库原理及应用实验

2020-02-28 其他范文 下载本文

数据库原理及应用实验报告 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日一、实验目......

《数据库原理及应用实验报告 6.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
数据库原理及应用实验报告 6
点击下载文档
相关专题 数据库原理及应用实验 实验报告 原理 数据库 数据库原理及应用实验 实验报告 原理 数据库
[其他范文]相关推荐
[其他范文]热门文章
下载全文