当前位置:文档之家› 实验5:存储过程和触发器

实验5:存储过程和触发器

实验5 存储过程和触发器
一、实验目的
1理解存储过程的概念、了解存储过程的类型
2掌握创建存储过程的方法
3掌握执行存储过程的方法
4理解触发器的功能及工作原理。

5掌握创建、更改、删除触发器的方法。

二、实验内容
1、使用不带参数的存储过程
(1)创建一个存储过程,查询person表中所有不重复的职称。

语句:
Create proc person_name
As
Select distinct prof
from person;
结果:
(2)执行存储过程
语句:
exec person_name
结果:
2、带输入参数的存储过程
(1)创建一个存储过程,按照姓名查询person表中的员工信息。

语句:
Create proc name_person
@pname varchar(10)
As
Select *from person
where pname=@pname
结果:
(2)执行存储过程,查询名为黎明的员工数据
语句:
Exec name_person'黎明'
结果:
3、带输入/输出参数的存储过程
(1)创建一个存储过程,使其能够根据员工姓名,查询员工工资。

(考虑到员工不存在时给出提示信息)
Create proc name_psalary
@pname varchar(10)
As
If EXISTS
(
Select pname from person
Where person.pname=@pname)
Begin
Select distinct pname,fact from person,salary
Where person.pname=@pname
And person.pno=salary.pno
End
else
Print'无此员工!'
(2)执行存储过程
存在时:
语句:exec name_psalary
不存在时:
4、使用触发器
(1)创建一个触发器trig_update,返回对person进行更新操作后,被更新的记录条数
语句:
create trigger trig_update
on person
after update
as
print 'Trigger Output' + convert(varchar(5),@@rowcount) + 'rows were updated.'结果:
(2)执行触发器
语句:
update person
set deptno='003' where pname='王辉'
结果:
(3)修改触发器trig_update,除返回被更新的记录条数外,再返回学生的所有基本信息
语句:
alter trigger trig_update on person
after update
as
print 'Trigger Output' + convert(varchar(5),@@rowcount) + 'rows were updated.' select * from person
Return
结果:
5、使用触发器的两个特殊表:插入表(inserted)和删除表(deleted)。

(1)在person上创建触发器ins_del_sample,在插入、删除或更新操作后,分别从inserted表和deleted表中查询员工所有信息。

create trigger ins_del_sample on person
after insert,update,delete
as
select * from inserted
select * from deleted
Return
结果:
操作1插入
语句:
insert into person values('000010','周杰伦','男','1982-4-7','高级','001');
结果:
操作2删除
语句:
delete from person where Pno='000004' 结果:
操作3更新:
语句:
update person set deptno='002' where pname='王琳' 结果:
(2)执行触发器。

思考执行插入、删除和更新操作后返回的表有什么区别?
答:
进行插入操作后,inserted返回的是增加的行的内容,deleted返回的是空内容
进行更新操作后,inserted返回的是更新行的新内容,deleted返回的是更新行之前的内容进行删除操作后,inserted返回的是空内容,deleted返回的是删除的行的内容
6、使用系统存储过程查看触发器(与存储过程的使用类似)
(1)显示触发器trig_update的一般信息
语句:exec sp_help trig_update
结果:
(2)显示触发器trig_update的源代码
语句:exec sp_helptext trig_update
结果:
(3)显示person上所有的依赖关系
语句:exec sp_depends person
结果:
(4)显示触发器trig_update所引用的对象语句:exec sp_depends trig_update
结果:。

相关主题