数据库存储过程练习附答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

存储过程、触发器练习1、在学生选课数据库中,创建一存储过程deptmale,查询指定系的男生人数,其中系为输入参数,人数为输出参数。createprocp_dept@deptchar(20),@mannumintoutputasselect@allcre=count(sno)fromstudentwheresdept=@deptandssex='男'declare@numintexecp_dept'计算机系',@numoutputprint@num2、在s_c数据库中,创建一个存储过程totalcredit,根据输入的学生姓名,计算其总学分。(使用输出参数)。并执行该存储过程。createprocp_cou@namechar(10),@allcreintoutputasselect@allcre=sum(ccredit)fromstudent,course,scwherestudent.sno=sc.snoandcourse.cno=sc.cnoandsname=@namegroupbysc.snodeclare@asumintexecp_cou'刘晨',@asumoutputprint@asum3、创建一更新触发器upd_grade,设置sc表的grade字段不能被更新,并显示信息“学生成绩不能被修改,请与教务处联系”。CREATETRIGGERmes_scONscFORUPDATEASIFUPDATE(grade)BEGINROLLBACKTRANPRINT'学生成绩不能被修改,请与教务处联系'END4、创建一个insert触发器uninsertstu,当在student表中插入一条新纪录时,如果是“计算机系”的学生,则撤销该插入操作,并返回“此系人数已满,不能再添加”信息。createtriggerunisnertstuonstudentforinsertasifexists(select*frominsertedwheresdept='计算机系')beginprint'此系人数已满,不能再添加'rollbacktransactionend4、创建一删除触发器tri_xs,功能是当某个学生从student表中被删除时,同时也删除sc表中该学生的相关记录。USE学生选课GOCREATETRIGGERtri_xsONstudentFORDELETEASDELETEscWHEREsnoIN(SELECTsnoFROMDELETED)GO5、在学生选课数据库中,创建一学生联系方式表stu_info(id,sno,sname,address,phone)。其中id是自动编号。并向该表中插入一条记录(0611105,李雷,汉正街5号,1111111)。6、在创建的stu_info表中,查找是否有‘王梅梅’同学,如果没有,则在此表中添加该记录(0611108,王梅梅,人民路1号,22222222),编程实现将此信息添加到表中。declare@idintsetIDENTITY_INSERTstu_infoONifexists(select*fromstu_infowheresname='王梅梅')beginprint'此人已存在.'endelsebeginselect@id=max(id)fromstu_infoset@id=@id+1insertintostu_info(id,sno,sname,address,phone)values(@id,'0611108','王梅梅','人民路1号','22222222')end

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功