版权声明:本文为博主原创文章,未经博主允许不得转载 QQ255615。 https://blog.csdn.net/Admin_Chin/article/details/72082114
计算机科学系实验报告(首页)
课程名称 |
数据库系统概论 |
班级 |
14计科2班 |
|||||
实验名称 |
触发器和存储过程 |
教导教师 |
索剑 |
|||||
姓名 |
张钦颖
扫描二维码关注公众号,回复:
3838854 查看本文章
|
学号 |
1414080901218 |
组号 |
|
日期 |
2016年5月10日 |
|
|
|
|
|
|
一、实验目的:
实现简单的触发器和存储过程编制,了解触发器和存储过程作用。
二、实验内容:
使用SQL语言书写触发器和存储过程。
三、操作步骤:
1) 用触发器实现如下功能;
设有两个数据表XX和YY,结构如下:
要求用触发器实现
create trigger tri1 on xx for insert as
begin
declare @a int;
declare @b varchar(10);
declare @c varchar(10);
select @a=xid,@b=xname,@c=xmoney from inserted;
insert into yy values(@a,@b,@c);
end
若在XX表中输入一个记录,则在YY表中追加相同记录;
INSERT INTO xx values('1','zqy','100');
若在XX表中更新一个记录的MONEY字段,则在YY表中更新相应记录的相同MONEY字段。
create trigger tri2 on xx for update as
begin
declare @d varchar(10);
select @d=xmoney from inserted;
update yy setymoney=@d;
end
update xx set XMONEY=200;
2) 在“学生-课程”数据库中用存储过程实现如下功能:
a. 实现查询“95001”同学所有的选修课程和成绩;
create procedure pro1 as
begin
select * fromSC where sno='95001';
end
b. 用参数传递实现查询“95001”同学所有的选修课程和成绩;
create procedure pro2(@sno varchar(10)) as begin
select * fromSC where sno=@sno;
end
c. 在Course表中增加一门课程,若已存在该课程即退出;若不存在即为某个指定系的学生增加选修这门课程,返回选修人数。
create procedure pro3(@cno1 varchar(10),@cname1 varchar(10), @sdept1 varchar(10)) as
declare @cno2 varchar(10);
declare @sno1 varchar(10);
select @cno2=Cno fromcourse where cno=@cno1 and cname=@cname1;
if @cno2 is null
begin
insert into Course(Cno,Cname) values(@cno1,@cname1);
insert into SC(Sno,Cno) select Sno,@cno1 from Student where Sdept=@sdept1;
select count(*) '选修人' from SC where Cno=@cno1;
end
四、实验结论、实验体会
本次实验虽然少,但是有难度,特别是存储过程,代码也比较长,难写。