第二篇实验内容及安排
答:sNO ccNO NormalMark ExamMark Mark 081220101 0312091006 NULL 90 88
sNO ccNO NormalMark ExamMark Mark 081220101 0312091006 80 90 88
四、实验测验
1、创建一个带输入参数和输出参数的存储过程,要求实现如下功能:输入学生学号,输出学生的选课门数、平均分以及所选总学分。 答:create procedure c
(
@sno char(10),
@cnocount int output, @avgmark float output, @sumcredit int output) As begin
select @cnocount=count(*),@avgmark=avg(mark),@sumcredit=sum(credit) From student_course sc,course_class cc ,student s
where sc.sno=s.sno and cc.ccno=sc.ccno group by s.sNO,sname
end 执行过程:
Declare @ccount int Declare @smark float Declare @scredit int
Exec c '081220101' , @ccount output, @smark output, @scredit output
Select '081220101' as '学生号', @ccount as '选课门数', @smark as '平均分',
@scredit as '所选学分'
2、创建一个触发器,当在student_course中添加一个学生选课时,如果已选学分超过30学分或者选课人数超过65人,则拒绝学生本次选修申请。 答:create trigger trig1 on student_course
for insert ,update as declare @a int
-6-
declare @b int
select @a=(select SUM(credit) from course_class ) , @b=(select COUNT(*) from course_class cc ) from inserted if @a>30 or @b>65 begin rollback
raiserror('该学生无法再选课!',16,1)
end
结果:
insert student_course values('081710106',0312091006,0,90,90)
五、实验思考题
1、触发器的种类和用途?
2、存储过程的类型有哪些?分别有什么特征? 3、触发器在维护数据完整性方面有什么功能?
数据库原理与应用实验
-7-
第二篇实验内容及安排
-8-