1. 程式人生 > >惠州學院-資料庫實驗6-觸發器和儲存過程

惠州學院-資料庫實驗6-觸發器和儲存過程

    計算機科學系實驗報告(首頁)

課程名稱

資料庫系統概論

班級

14計科2班

實驗名稱

觸發器和儲存過程

教導教師

索劍

姓名

張欽穎

學號

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 [email protected];
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 [email protected];
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 [email protected] and [email protected];
if @cno2 is null
begin
insert into Course(Cno,Cname) values(@cno1,@cname1);
insert into SC(Sno,Cno) select Sno,@cno1 from Student where [email protected];
select count(*) '選修人' from SC where [email protected];
end


四、實驗結論、實驗體會

       本次實驗雖然少,但是有難度,特別是儲存過程,程式碼也比較長,難寫。