北 华 航 天 工 业 学 院
《数据库系统管理》
实验报告
报 告 题 目 : 存储过程、触发器的创建于管理 所 在 系 部 : 计算机科学与工程系 所 在 专 业 : 网络工程专业 学 号 : 姓 名 : 教 师 姓 名 : 完 成 时 间 : 2011 年 10 月 19 日
北华航天工业学院教务处制
存储过程、触发器的创建与管理
一、 实验目的
1、 掌握存储过程的概念、优点、特点及用途;
2、 掌握创建、执行、查看、修改和删除存储过程的方法; 3、 了解触发器和一般存储过程的区别、概念及优点; 4、 掌握创建、查看、修改和删除触发器的方法。
二、 实验内容
(一)附加上次实验所创建的数据库“db_Library”,并回顾该数据库的数据表信息。 (二)练习创建和管理存储过程
1、使用管理控制台创建一个名为“计算机系借阅信息_PROC”的无参存储过程,要求显示计算机系读者2011-1-1以后借阅的图书信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段,并执行该存储过程,查看显示结果。
2、使用T-SQL语句创建一个名为“读者借阅信息_PROC”的带参数的存储过程,要求根据输入的读者的编号显示读者的所有借阅信息,包括“读者编号”、“姓名”、“系部”、“图书编号”、“图书名称”和“借阅日期”等字段,并执行该存储过程,查看显示结果。
create proc 读者借阅信息_PROC1 @dzbh char(10) as begin
select tb_reader.读者编号,姓名,系部, tb_book.图书编号,书名,借阅日期 from tb_book,tb_reader,tb_borrow
where tb_book.图书编号=tb_borrow.图书编号 and tb_reader.读者编号=tb_borrow.读者编号 and tb_reader.读者编号=@dzbh end --
declare @srcs char(10),@fhzt int set @srcs='R10009'
exec @fhzt=读者借阅信息_PROC1 @srcs
print '执行状态值为'+cast(@fhzt as varchar(10))
3、使用T-SQL语句创建一个名为“图书借阅信息_PROC”的带参数的存储过程,要求根据输入的图书编号计算该图书的借阅数量,并根据程序执行结果返回不同的值,执行成功返回0,不成
功返回错误号,并执行该存储过程,输出图书编号、借阅数量和程序结果返回值。
create proc 图书借阅信息_PROC1 @tsbh char(10),@jysl int output as begin
declare @ztz int set @ztz=0
select @jysl=count(distinct 读者编号) from tb_borrow where 图书编号=@tsbh if @@error<>0
set @ztz=@@error return @ztz end --
declare @sccs int,@fhz int,@srcs char(10) set @srcs='10003'
exec @fhz=图书借阅信息_PROC1 @srcs,@sccs output select @srcs,@sccs,@fhz
4、使用管理控制台查看“读者借阅信息_PROC”存储过程的定义信息和依赖的对象。
5、使用系统存储过程查看“计算机系借阅信息_PROC”存储过程的定义信息和依赖的对象。 sp_helptext sp_depends
6、使用T-SQL语句创建一个名为“删除读者信息_PROC”的存储过程,要求根据所提供的读者编号,删除该编号所对应的读者,如果不存在此编号的读者,则显示“该编号的读者不存在!”。创建完成之后,执行上述存储过程,观察执行结果。
create proc 删除读者信息_PROC1 @dzbh char(10) as begin
if exists(select * from tb_reader where 读者编号=@dzbh)
begin
delete from tb_borrow where 读者编号=@dzbh delete from tb_reader where 读者编号=@dzbh end else
print '该编号的读者不存在!' end
exec 删除读者信息_PROC1 'R10010'
7、使用T-SQL语句创建一个名为“修改借阅信息_PROC”的存储过程,要求根据所提供的读者编号和天数,将该读者的归还日期增加相应的天数,如果不存在该读者的借阅信息,则显示“该读者没有借阅图书!”。创建完成之后,执行上述存储过程,观察执行结果。
create proc 修改借阅信息_PROC1 @dzbh char(10),@ts int as begin
if exists(select * from tb_borrow where 读者编号=@dzbh) update tb_borrow
set 归还日期=dateadd(day,@ts,归还日期) where 读者编号=@dzbh else
print '该读者没有借阅图书!' end --
exec 修改借阅信息_PROC1 @ts=3,@dzbh='R10003'
8、使用管理控制台删除“读者借阅信息_PROC”存储过程。
9、使用T-SQL语言删除“计算机系借阅信息_PROC1”存储过程。 drop proc 计算机系借阅信息_PROC1 (三)练习创建和管理触发器
1、使用管理控制台创建一个名为“读者信息插入_TRIG”的触发器,要求在“读者信息表”表中插入一条新记录时触发该触发器,并给出“插入了一条新记录!”的提示信息。并在“读者信息表”中插入一条记录查看显示结果。
2、使用T-SQL语句创建一个名为“借阅信息插入修改_TRIG”的触发器,要求在“借阅信息表”
中插入或修改记录时触发该触发器,检查“归还日期”是否超过2011年12月31日,如果超过给出相应提示,提示中给出“归还日期”超过2011年12月31日的“图书编号”和“读者编号”。
create trigger 借阅信息插入修改_TRIG on tb_borrow for insert,update as begin declare @date datetime,@bookno char(10),@readerno char(10) select @date=归还日期,@bookno=图书编号,@readerno 读者编号 from inserted if @date>'2011-12-31' begin print 'date more than 2011-12-31' select @bookno 图书编号,@readerno 读者编号 end end
insert into tb_borrow values('10011','R10004','2011-11-4','2012-2-2') 3、使用T-SQL语句实现该数据库中各表间的级联删除。
4、使用T-SQL语句创建一个插入、更新类型的触发器“图书信息_TRIG”,当图书信息表中插入或修改记录时,触发该触发器,检查库存册数是否大于0,若小于0,则撤销插入和修改操作。
create trigger 图书信息_TRIG on tb_book
for insert,update as begein
print 'begin trigger' declare @kccs int
select @kccs=库存数from inserted if @kccs<0 rollback end
insert into tb_book values('11001',2,'eee','ddd','ggg',29,-1)
update tb_book set 库存数=-2 where 图书编号='10002'
5、使用管理控制台查看“读者信息插入_TRIG”触发器的依赖的对象。
6、使用系统存储过程查看“借阅信息插入修改_TRIG”触发器的定义信息和依赖的对象。 7、使用管理控制台删除“读者信息插入_TRIG”触发器。
8、使用T-SQL语言删除“借阅信息插入修改_TRIG”触发器。
drop trigger 借阅信息插入修改_TRIG
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务