存储过程、触发器练习
1、在学生选课数据库中,创建一存储过程deptmale,查询指定系的男生人数,其中系为输入参数,人数为输出参数。
create proc p_dept
@dept char(20),@mannum int output
as
select @allcre=count(sno) from student
where sdept=@dept and ssex='男'
declare @num int
exec p_dept '计算机系',@num output
print @num
2、在s_c数据库中,创建一个存储过程totalcredit,根据输入的学生姓名,计算其总学分。(使用输出参数)。并执行该存储过程。
create proc p_cou
@name char(10),@allcre int output
as
select @allcre=sum(ccredit)from student,course,sc
where=and=
and sname=@name group by
declare @asum int
exec p_cou '刘晨',@asum output
print @asum
3、创建一更新触发器upd_grade,设置sc表的grade字段不能被更新,并显示信息“学生成绩不能被修改,请与教务处联系”。
CREATE TRIGGER mes_sc
ON sc
FOR UPDATE
AS
IF UPDATE(grade)
BEGIN
ROLLBACK TRAN
PRINT '学生成绩不能被修改,请与教务处联系'
END