- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
触发器与储存过程实验
数据库原理及应用
实验报告
题 目: 触发器与储存过程实验
专 业: 计算机科学与技术
班 级: 1320544
学 号: 11
姓 名: 李俊翔
太原工业学院计算机工程系
2015年11 月28日
实验目的与要求
使学生加深对触发器和存储过程
二、实验内容
1、掌握触发器的使用。
2、掌握存储过程的创建、修改和删除;掌握存储过程的执行。update触发器,级联更新“选课”表种相应的记录信息。
②利用Delete表,将“学生”表中被删除的记录存储到“学生备份”表中,以供日后的数据查询和分析。
2)存储过程的使用
①在Student数据库中,建立一个存储过程,要求统计计算机系学生的人数,并将人数返回给用户。
②在Student数据库中,建立一个存储过程,要求
统计成绩大于等于90分学生的人数;
统计成绩大于等于80分并且小于90分学生的人数,并将人数返回给用户。
三、解决方案
代码实现:
1)触发器的使用
①在数据表“学生”中创建update触发器,级联更新“选课”表种相应的记录信息。
create trigger Student_update
on Student for update as
declare @bSno char(9),@aSno char(9)
print使用update触发器级联更新SC表中相关的行-开始
select @bSno=Sno from deleted
print更新前的学号:+@bSno
select @aSno=Sno from inserted
print更新后的学号:+@aSno
update SC set Sno=@aSno where SC.Sno=@bSno
print使用update触发器级联更新SC表中相关的行-结束
②利用Delete表,将“学生”表中被删除的记录存储到“学生备份”表中,以供日后的数据查询和分析。
if exists(select* from dbo.sysobjects where id=object_id(N[dbo].[Student_back])and OBJECTPROPERTY(id,NIsUserTable)=1)
drop table [dbo].[Student_back]
go
create table [dbo].[Student_back](
[Sno][char](9) not null,
[Sname][char](3) not null,
[Ssex][char](1) not null,
[Sage][char](2) not null,
[Sdept][int] null
)on [primary]
go
2)存储过程的使用
①在Student数据库中,建立一个存储过程,要求统计计算机系学生的人数,并将人数返回给用户。
CREATE PROCEDURE PROC_Student05 @Sdept varchar(10),@num smallint output as
select @num=count(*) from Student where Sdept=@Sdept
GO
declare @Sdept varchar(10),@n smallint
set @Sdept=CS
exec PROC_Student05 @Sdept,@n output
print @n
go
②在Student数据库中,建立一个存储过程,要求
统计成绩大于等于90分学生的人数;
统计成绩大于等于80分并且小于90分学生的人数,并将人数返回给用户。
CREATE PROCEDURE PROC_Student06 @n1 smallint output,@n2 smallint output as
select @n1=count(*) from SC where Grade=90
select @n2=count(*) from SC where Grade=80 and Grade90
declare @n1 smallint,@n2 smallint
exec PROC_Student06 @n1 output,@n2 output
print convert(varchar(6),@n1)
print convert(varchar(6),@n2)
Go
实验结果
1)
①
②
2)
①
②
出现的问题及解决的方法
通过反复的看老师给的PPT,也通过自己的练习,终于完成了这次的实验。同样通
文档评论(0)