实验6数据库实验——存储过程和触发器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验6存储过程与触发器、实验目的
1、加深与巩固对存储过程与触发器概念的理解。
2、掌握触发器的简单应用。
3、掌握存储过程的简单应用。
二、实验内容
一)存储过程:
1、创建一存储过程,求1+2+3+…+n并打印结果。
CREATE PROCEDURE addresult
AS
DECLARE @n int =10, /* 最后一个数*/
@i int =0,
@result int =0 /* 结果*/
BEGIN
WHILE (@i <=@r)
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、修改上述存储过程为addresultl,使得@n为输入参数,其具体值由用户调用此存储过程时指定。
CREATE PROCEDURE addresultl
@n int =10 /* 最后一个数*/
AS
DECLARE @i int =0,
@result int =0 /* 结果*/
BEGIN
WHILE (@i <=@r)
BEGIN
SET @result =@result +@i
SET @i =@i+1
END
PRINT '1+2+3+ 、、、+n 的结果就是:’
PRINT @result
RETURN( @result )
END
GO
*
命令已成9閘克
4、调用上面修改后的addresultl存储过程,打印1+2+3十…+100的结果。
EXEC addresultl 100
心消息
1+2+3+..- 如瞬果是:
他0
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 <=@r)
BEGIN
SET @sum =@sum+@i
SET @i =@i+1
END
END
GO
6. 调用上面修改后的addresult2存储过程,设置变量@s接收计算
1+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
EXEC Proc Student
8. 创建一存储过程Stu_grade通过读取某门课的编号,求出不及格的学生的学号。
CREATE PROCEDURE Stu_grade
@n char ( 10)
AS
BEGIN
select sno
from SC
where eno =@n and grade <60
END
GO
9•调用上面的存储过程Stu_grade求出课程编号为“ 0101 ”的不及格的学生
10. 创建一存储过程avgGrade通过读取学生的学号,以参数形式返回该学生的平均分。
CREATE PROCEDURE avgGrade
@n char ( 10)
AS
BEGIN
select AVG( grade )平均分
from SC
where sno =@n
group by sno
GO
11. 调用上面的存储过程avgGrade求出学号为“ 990102014”的平均分。
平均分
12. 删除上述存储过程avgGrade,
drop procedure avgGrade
—Lnr* ■■ 甘、—- r TT"■—- IB
-drop p.oced口工飪aT-cGrade|
鬲消息
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