实验6 数据库实验——存储过程和触发器

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

实验6 存储过程与触发器

一、实验目的

1、加深与巩固对存储过程与触发器概念的理解。

2、掌握触发器的简单应用。

3、掌握存储过程的简单应用。

二、实验内容

一)存储过程:

1、创建一存储过程,求l+2+3+…+n,并打印结果。

CREATE PROCEDURE addresult

AS

DECLARE @n int=10,/*最后一个数*/

@i int=0,

@result int=0 /*结果*/

BEGIN

WHILE(@i<=@n)

BEGIN

SET @result=@result+@i

SET @i=@i+1

END

PRINT'1+2+3+、、、+n的结果就是:'

PRINT @result

RETURN(@result)

END

GO

2.调用上面的addresult存储过程,打印l十2+3+…+10的结果。EXEC addresult

3、修改上述存储过程为addresult1,使得@n为输入参数,其具体值由用户调用此存储过程时指定。

CREATE PROCEDURE addresult1

@n int=10 /*最后一个数*/

AS

DECLARE @i int=0,

@result int=0 /*结果*/

BEGIN

WHILE(@i<=@n)

BEGIN

SET @result=@result+@i

SET @i=@i+1

END

PRINT'1+2+3+、、、+n的结果就是:'

PRINT @result

RETURN(@result)

END

GO

4、调用上面修改后的addresult1存储过程,打印l+2+3+…+100的结果。

EXEC addresult1 100

5.修改上述存储过程为addresult2,将@n参数设定默认值为10,并改设@sum为输出参数,让主程序能够接收计算结果。

CREATE PROCEDURE addresult2

@n int=10,/*最后一个数*/

@sum int out/*结果*/

AS

DECLARE @i int=0

BEGIN

set @sum=0

WHILE(@i<=@n)

BEGIN

SET @sum=@sum+@i

SET @i=@i+1

END

END

GO

6.调用上面修改后的addresult2存储过程,设置变量@s接收计算l+2+3+…+10的结果。

DECLARE @s int

set @s=0

EXEC addresult2 10,@sum=@s out

PRINT'1+2+3+、、、+n的结果就是:'

PRINT @s

7.创建一存储过程Proc_Student,用于显示学号为“0102”的学生基本信息(包括学号、姓名、性别与系)。

CREATE PROCEDURE Proc_Student

AS

BEGIN

select*

from S

where S、sno=0102

END

GO

EXEC Proc_Student

8.创建一存储过程Stu_grade,通过读取某门课的编号,求出不及格的学生的学号。

CREATE PROCEDURE Stu_grade

@n char(10)

AS

BEGIN

select sno

from SC

where cno=@n and grade<60

END

GO

9.调用上面的存储过程Stu_grade,求出课程编号为“0101”的不及格的学生。

EXEC Stu_grade 0101

10.创建一存储过程avgGrade,通过读取学生的学号,以参数形式返回该学生的平均分。

CREATE PROCEDURE avgGrade

@n char(10)

AS

BEGIN

select AVG(grade)平均分

from SC

where sno=@n

group by sno

END

GO

11.调用上面的存储过程avgGrade,求出学号为“990102014”的平均分。

EXEC avgGrade 990102014

12.删除上述存储过程avgGrade。

drop procedure avgGrade

13、创建存储过程search,该存储过程有三个参数,分别为@t、@p1,@p2,根据这些参数,找出书名与@t有关,价格在@p1与@p2(@p2>=@p1)之间的书的编号,书名,价格,出舨日期。如果用户调用时没有指定@t参数的值.则表示可为任意值,如用户没有指定@p2,则书本价格没有上限。用到的关系为:titles (title_id,title,price,pubdate)。

CREATE PROCEDURE search

@t char(10)="%",

@p1 char(10),

@p2 char(10)=NULL

AS

BEGIN

相关文档
最新文档