数据库实验七:存储过程及应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库实验七:存储过程及应用

一、实验目的与要求:

1.实验目的

1.理解存储过程的概念。

2.掌握存储过程的使用方法。

2.实验要求

1.建立如下的存储过程(基于前面实验建立的表和插入的数据,并为每个存储过程设计返回的状态值):

(1)按要求设计完成如下功能的存储过程。

①查询平均分数在x到y范围内的学生信息。

说明:

●该存储过程有两个参数;

●要求查询的学生信息包括学号、姓名、院系名称和平均分数。

②更新操作,以学号、课程编号和考试成绩作参数更新指定学生和课程的考

试成绩,并返回该学生的平均成绩。

③更新操作,以学号、课程编号和考试成绩作参数更新指定学生和课程的考

试成绩,并返回该学生的平均成绩。

(2)自行再分别设计一个完成查询和完成操作功能的存储过程(在实验报告中要准确描述功能需求)。

(3)在客户端以存储过程和输入SQL语句的方式分别执行相同的查询或操作,比较使用和不使用存储过程的区别。

二、实验内容

1、实验原理

1.创建存储过程的SQL语句的一般格式是:

CREATE PROC[edure] [schema_name].procedure-name [; number ]

[@parameter data-type [VARYING] [= default ][OUT | OUTPUT],…] AS sql-statement

2.执行存储过程的语句是:

[EXECute]

[@<返回状态码> =]

<存储过程名>

[[@<参数>=]{<值>|@<变量>}…]

EXECUTE [@return_status=] [schema_name].procedure-name [; number ] [@parameter =]{value | variable [ OUTPUT]}[,…n]

2、实验步骤与结果

(1)调出SQL Server2005软件的用户界面,进入SQL Server Management Studio。

(2)输入自己编好的程序。

(3)检查已输入的程序正确与否。

(4)运行程序,并分析运行结果是否合理和正确。在运行时要注意当输入不同的数据时所得到的结果是否正确。

(5)输出程序清单和运行结果。

实验程序:

create procedure Stu

@minmark smallint,@maxmark smallint

AS

select学生.学号,学生.姓名,院系.名称,平均成绩

from学生join院系

on学生.院系=院系.编号

where平均成绩>=@minmark and平均成绩<=@maxmark

execute Stu80,100

create procedure Renew

@StuNum char(8)output,@CouNum char(8),@Mark smallint

AS

update选课

set成绩=@Mark

where学号=@StuNum and课程编号=@CouNum declare@A VGM smallint

select@A VGM=A VG(成绩)

from选课

where学号=@StuNum

return@A VGM

declare@avg smallint

execute@avg=Renew003,01,91

print'更新后平均成绩:'+str(@avg,6)

查询所有任课老师的工资,并将制定课程的的责任教师的工资改为

create procedure Sal

@CouNum char(8)

AS

update教师

set工资=100

where教师编号=(select责任教师

from课程

where课程编号=@CouNum)

select教师编号,工资

from教师

where教师编号in(select责任教师

from课程)

exec Sal102

三、实验分析与小结:

(实验过程中的问题分析、产生的原因以及解决方法;实验结果分析;有待优化思路)

1、实验过程中的问题分析、产生的原因以及解决方法。

在使用cursor数据类型的参数的存储过程时,T-SQL存储过程只能将cursor数

据类型用于OUTPUT参数,并且需要配合关键字VARYING一起使用。在存储的过

程中,实践返回的是状态,所以只能是数值。

四、其它

思考题:

1、为什么要使用存储过程?

(1)在数据库服务器中只有首次对存储过程中的命令进行编译,以后直接调用无需编译,加快执行速度。

(2)只提供给用户参数和结果,存储过程对查询过程封装和加密,简化用户使用,防止非法修改。

(3)存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量sql语句的代码流量。

(4)可以只赋给用户执行存储过程的权利,而不给用户操作相应数据表的权利,这样可以有效防止注入攻击。

(5)维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。

得分(百分制)

相关文档
最新文档