惠州學院-資料庫實驗6-觸發器和儲存過程
阿新 • • 發佈:2018-10-31
計算機科學系實驗報告(首頁)
課程名稱 |
資料庫系統概論 |
班級 |
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
四、實驗結論、實驗體會
本次實驗雖然少,但是有難度,特別是儲存過程,程式碼也比較長,難寫。