实验6 数据库实验——存储过程和触发器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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