欢迎来到天天文库
浏览记录
ID:57755073
大小:18.50 KB
页数:3页
时间:2020-09-02
《存储过程与触发器练习.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.使用library数据库创建一个存储过程,查询赵良宇的rname和lendnum。2.为数据库library创建一个多表查询的存储过程,查询出读者为“程鹏”的借阅信息。3.为数据库library创建一个查询某读者(读者姓名在执行存储过程时给出)借阅情况的存储过程(输入参数型)4.利用输出参数计算阶乘(例如输入5,求5!)触发器练习:1.创建基于表“reader”、执行delete操作的after触发器。功能是当删除一名读者之后,给出“数据已被删除!”文字提示。Createtriggera1OnreaderFordeleteAsBeginP
2、rint‘数据被删除!’end2.创建insert触发器在数据库library表borrow中插入借阅信息数据时,得到该书的应还日期并将读者表中的借阅数量增加1本Createtriggera2OnborrowAfterinsertAsBeginDeclare@dzchar(10),@tschar(15),@dxint,@tsintSet@dz=(selectridfrominserted)Set@ts=(selectbidfrominserted)Set@dx=(selecttypeidfromreaderwhererid=@dz)Updat
3、eborrowSetsreturndate=lenddate+(selectlimitdaysfromreadertypewheretypeid=@dx)Whererid=@dzandbid=@tsandreturndateisnullUpdatereaderSetlendnum=lendnum+1Whererid=@dzEnd3.创建update触发器在数据库Library中,当读者还书时,实际上要修改表brorrow中相应记录还期列的值,创建触发器并计算出是否过期,以及过期了多少天,同时将读者表reader的借阅数量减1CREATETRI
4、GGERa3ONborrowAFTERUPDATEASDECLARE@daysint,@dzbhchar(10),@tsbhchar(15)SET@dzbh=(selectRIDfrominserted)SET@tsbh=(selectBIDfrominserted)SELECT@days=DATEDIFF(day,ReturnDate,SReturnDate)FROMborrowWHERERID=@dzbhandBID=@tsbhIF@days>0PRINT'没有过期!'ELSEPRINT'过期'+convert(char(6),@days
5、)+'天'UpdatereaderSetlendnum=lendnum-1Whererid=@dzbhEnd触发代码:USELibraryUPDATEborrowSETReturnDate='2007-12-12'WHERERID=''andBID='TP85-08'GO1.创建delete触发器对Library库中Reader表的DELETE操作定义触发器。检查该读者是否有书没还,若该读者还有书没还则不能被删除。CREATETRIGGERa4ONReaderFORDELETEASDECLARE@data_yjintSELECT@data_y
6、j=LendnumFROMdeletedIF@data_yj>0BEGINPRINT'该读者不能删除!还有'+convert(char(2),@data_yj)+'本书没还。ROLLBACKENDELSEPRINT'该读者已被删除!'End2.创建inseatedof触发器为数据库library中表reader的delete操作定义inserteadof触发器。Createtriggera5OnreaderInsteadofdeleteAsBeginDeclare@data_jyintSelect@data_jy=lendnumFromdel
7、etedIf@data_jy>0BeginPrint‘该读者不能删除!还有’+convert(char(2),@data_jy)+’本书未还!’EndElsePrint‘该读者还没有删除!’end
此文档下载收益归作者所有