1 / 11
文档名称:

实验六-存储过程和触发器.doc

格式:doc   大小:6,031KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验六-存储过程和触发器.doc

上传人:916581885 2021/7/14 文件大小:5.89 MB

下载得到文件列表

实验六-存储过程和触发器.doc

文档介绍

文档介绍:实验六-存储过程和触发器
实验六 存储过程和触发器
一、目的与要求
掌握编写数据库存储过程的方法。
掌握建立数据库触发器的方法,通过实验观察触发器的作用和触发条件设置等相关操作。
二、实验准备
了解编写存储过程和调用的T-SQL语法;
了解触发器的作用;
了解编写触发器的T-SQL语法。
三、实验内容
存储过程
在studentdb数据库中建立存储过程getPractice,查询指定院系(名称)(作为存储过程的输入参数)中参与“实践”课程学****的所有学生学号、姓名、所学课程编号和课程名称,若院系不存在,返回提示信息。
提示:D_Info表中存储了院系代码D_ID,而St_Info表中学号字段St_ID的前两位与之对应,则D_Info表与St_Info表之间的联系通过这两个字段的运算构成连接条件。
分别执行存储过程getPractice,查询“法学院”和“材料科学与工程学院”的学生中参与“实践”课程的所有学生学号、姓名、所学课程编号和课程名称。
create procedure getPractice
***@D_Name varchar(30)
output
as
begin
if not exists
(select *
from D_Info
where D_Name= ***@D_Name
)
print '对不起,该院系不存在'
else
select ,,C_Name
from s_c_info inner join st_info on =
inner join C_Info on =
where in
( select St_ID
from st_info join D_Info on =left(,2)
where ='实践' and = ***@D_Name
)
end
go
利用系统存储过程sp_rename将getPractice更名为getPctStu
execute sp_rename getPractice , getPctStu
修改存储过程getPctStu,返回指定院系中参与实践课程的学生人次数,并利用该存储过程以“法学院”为输入参数验证执行的结果
alter procedure getPctStu
***@D_Name varchar(30)
as
begin
if not exists
(select *
from D_Info
where D_Name= ***@D_Name
)
print '对不起,该院系不存在'
else
select ,,C_Name,count () as 人次数
from s_c_info inner join st_info on =
inner join C_Info on =
where in
( select St_ID
from st_info join D_Info on =left(,2)
where ='实践' and = ***@D_Name
)
group by ,,C_Name
end
Go
c_no varchar(10),
oldscore int,
newscore int,
uname varchar(10) default user,
udata datetime default getdate()
)
go
create trigger tr_sc
on s_c_info
for insert,update
as
if update(score)
begin
if(select count(*) from deleted)<>0
insert into sc_log(type,st_id,c_no,oldscore,newscore)
s