sql数据库游标触发器实验结果

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验成绩

《数据库系统原理及应用》

(七)

专业班级: 软件1101班

学号: 201116040128

姓名: 韩盼盼

指导教师: 苏小玲

2013 年10 月14 日

实验七名称:SQL Server触发器和游标

一、实验内容及要求

1.创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。

任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。

任务2:限制每个学期所开设的课程总学分在20~30范围内。

任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作)

任务4:限制不能删除有人选的课程

2.创建满足下述要求的游标

任务1:查询java课程的考试情况,并按教材11-19所示样式显示结果数据。

任务2:统计每个系的男生人数和女生人数,并按教材11-20所示样式显示结果数据。

任务3:列出每个系的学生信息,要求首先列出一个系的系名,然后在该系名下列出本系学生的姓名和性别,以此类推,直至列出全部系。要求按教材11-21所示样式显示结果数据。

二、实验目的

掌握触发器的概念;掌握触发器创建方法;掌握游标的概念;掌握游标的使用方法。

三.实验步骤及运行结果

1.创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。

任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。

create trigger tri_Insertsdept on Student after insert as if exists(select*from inserted i where i.Sdept!='计算机系'and i.Sdept!='信息管理系'and i.Sdept!='数学系'and i.Sdept!='通信工程系')

Begin print'你所插入的学生的系被限制!'rollback end go

insert into student values (080000,'童彤','女','1990-05-01','服装设计','服装设计系')

insert into student values(080000,'顾城北','男','1990-06-01','高级编程','计算机系')

任务2:限制每个学期所开设的课程总学分在20~30范围内。

create trigger tri_Insertcredit on Course after insert as if (select sum(c.Credit)from Course c join inserted i on i.Smester=c.Smester)not between20 and30 begin print'你所插入的课程所在学期的总学分不在~30这个范围内' rollback end go

insert into Course values ('C012','影视鉴赏',25,1)

insert into Course values ('C013','服装设计',16,1)

任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作)

create trigger tri_totalcno on SC after insert as declare@sno char(9)

select@sno=inserted.Sno from inserted

if exists(select count(*)from SC join Course c on o=o where SC.Sno=@sno group by Smester having count(*)>2) begin print'你所插入的学生选课门数超过门!' Rollback end go

insert into SC values(821102,'c006',88)

insert into SC values(811101,'c006',86)

任务4:限制不能删除有人选的课程

create trigger tri_deletcno on Course after delete as

if exists(select*from Course c join deleted d on o=o join SC on o=o)

Begin print'你所删除的学生存在选课!' rollback end go

delete from Course where Cno='c001'

delete from Course where Cno='c013'

2.创建满足下述要求的游标

任务1:查询java课程的考试情况,并按教材11-19所示样式显示结果数据。

declare@name nchar(5),@sdept nvarchar(20),@grade int

print'选了java课程的学生情况:'

print'姓名所在系成绩'

declare java_cursor cursor for

select Sname,Sdept,Grade from Student s join SC on s.Sno=SC.Sno join Course c on o=o where Cname='java' open java_cursor

fetch next from java_cursor into@name,@sdept,@grade

while@@FETCH_STATUS=0 begin

print@name+' '+@sdept+' '+cast(@grade as char(4))

fetch next from java_cursor into@name,@sdept,@grade

End close java_cursor deallocate java_cursor

相关文档
最新文档