惠州学院-数据库实验6-触发器和存储过程

版权声明:本文为博主原创文章,未经博主允许不得转载 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


四、实验结论、实验体会

       本次实验虽然少,但是有难度,特别是存储过程,代码也比较长,难写。

 

猜你喜欢

转载自blog.csdn.net/Admin_Chin/article/details/72082114