您好,欢迎访问三七文档
北华航天工业学院《数据库原理与应用》实验报告报告题目:数据库编程作者所在系部:计算机科学与工程作者所在专业:网络工程作者学号:20104052201作者姓名:吴淑婷指导教师姓名:张云峰完成时间:2012-6-8北华航天工业学院教务处制数据库编程一、实验目的1、掌握存储过程的概念、优点、特点及用途;2、掌握创建、执行、修改和删除存储过程的方法;3、掌握创建游标和使用游标修改表中数据的方法。二、实验内容(一)附加上次实验所创建的数据库“db_Library”,并回顾该库的数据表信息。(二)练习创建和管理存储过程1、创建一个名为“PROC_系部读者借阅信息”的无参存储过程,要求显示计算机系读者2010-1-1以后借阅的图书信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段。创建完成之后,执行上述存储过程,观察执行结果。2、修改上述的存储过程为带参的存储过程,要求根据所提供的系部名称和时间,查询出该系部在该时间之后借阅了图书的读者信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段,并按照读者姓名升序排列,并将读者的总数作为输出参数返回。创建完成之后,执行上述存储过程,观察执行结果。3、创建一个名为“Proc_图书借阅信息”的存储过程,要求根据所提供的图书名称或编号,查询出借阅了该图书的读者信息,包括“读者编号”、“读者姓名”、“学号”、“借阅日期”,并返回该存储过程的执行状态。(其中,图书名称或编号可能为空,图书名称采用模糊查询)创建完成之后,执行上述存储过程,观察执行结果。4、创建一个名为“Proc_删除读者信息”的存储过程,要求根据所提供的读者编号,删除该编号所对应的读者,如果不存在此编号的读者,则显示“该编号的读者不存在!”。创建完成之后,执行上述存储过程,观察执行结果。5、创建一个名为“Proc_修改借阅信息”的存储过程,要求根据所提供的读者编号和天数,将该读者的归还日期增加相应的天数,如果不存在该读者的借阅信息,则显示“该读者没有借阅图书!”。创建完成之后,执行上述存储过程,观察执行结果。6、删除存储过程“Proc_修改借阅信息”。(三)练习创建游标1、定义一个游标,将有借书记录的读者的借阅信息(包括读者编号、读者姓名、书名、借阅日期)显示出来。2、通过游标将图书信息表中记录号为5的图书的单价改为50。三、实验步骤(二)练习创建和管理存储过程1、创建一个名为“PROC_系部读者借阅信息”的无参存储过程,要求显示计算机系读者2010-1-1以后借阅的图书信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段。USEdb_Library1GOCREATEPROCEDUREPROC_系部读者借阅信息ASSELECTrnameAS读者姓名,bnoAS图书编号,borrdataAS借阅日期FROMtb_reader,tb_borrowWHEREtb_reader.rno=tb_borrow.rnoANDborrdata2010-1-1ANDrindept='计算机系'2、修改上述的存储过程为带参的存储过程,要求根据所提供的系部名称和时间,查询出该系部在该时间之后借阅了图书的读者信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段,并按照读者姓名升序排列,并将读者的总数作为输出参数返回。USEdb_Library1GOCREATEPROCEDUREPROC_系部读者借阅信息@r_countintoutputASSELECTrnameAS读者姓名,bnoAS图书编号,borrdataAS借阅日期,count(rname)FROMtb_reader,tb_borrowWHEREtb_reader.rno=tb_borrow.rnoANDborrdata2010-1-1ANDrindept='计算机系'GROUPBYtb_reader.rname,tb_borrow.bno,tb_borrow.borrdataORDERBYrnameRETURN@r_countGO3、创建一个名为“Proc_图书借阅信息”的存储过程,要求根据所提供的图书名称或编号,查询出借阅了该图书的读者信息,包括“读者编号”、“读者姓名”、“学号”、“借阅日期”,并返回该存储过程的执行状态。(其中,图书名称或编号可能为空,图书名称采用模糊查询)创建完成之后,执行上述存储过程,观察执行结果。USEdb_Library1GOCREATEPROCEDUREPROC_图书借阅信息ASSELECTrstunoAS学号,tb_reader.rnoAS读者编号,rnameAS读者姓名,borrdataAS借阅日期FROMtb_reader,tb_borrow,tb_bookWHEREtb_reader.rno=tb_borrow.rnoANDtb_borrow.bno=tb_book.bnoGO4、创建一个名为“Proc_删除读者信息”的存储过程,要求根据所提供的读者编号,删除该编号所对应的读者,如果不存在此编号的读者,则显示“该编号的读者不存在!”。创建完成之后,执行上述存储过程,观察执行结果。CREATEPROCEDUREProc_删除读者信息@rnoCHAR(6)ASIFEXISTS(SELECTrnoFROMtb_readerWHERErno=@rno)BEGINDELETEFROMtb_borrowWHERErno=@rnoDELETEFROMtb_readerWHERErno=@rnoENDELSEPRINT'该编号的读者不存在!'EXECProc_删除读者信息'R10010';EXECProc_删除读者信息'R11010';5、创建一个名为“Proc_修改借阅信息”的存储过程,要求根据所提供的读者编号和天数,将该读者的归还日期增加相应的天数,如果不存在该读者的借阅信息,则显示“该读者没有借阅图书!”。创建完成之后,执行上述存储过程,观察执行结果。CREATEPROCProc_修改借阅信息@dzbhCHAR(6),@tshINTASBEGINIFEXISTS(SELECT*FROMtb_borrowWHERErno=@dzbh)UPDATEtb_borrowSETlenddata=dateadd(day,@tsh,lenddata)WHERErno=@dzbhELSEPRINT'该读者没有借阅图书!'ENDEXECProc_修改借阅信息@tsh=3,@dzbh='R10003'EXECProc_修改借阅信息@tsh=3,@dzbh='R10011'6、删除存储过程“Proc_修改借阅信息”。DROPPROCEDUREProc_修改借阅信息(三)练习创建游标1、定义一个游标,将有借书记录的读者的借阅信息(包括读者编号、读者姓名、书名、借阅日期)显示出来。DECLARE@B_rnoCHAR(6),@B_rnameCHAR(10),@B_bnameCHAR(30),@B_borrdataDATETIMEDECLAREB_cursorSCROLLCURSORFORSELECTtb_reader.rno,tb_reader.rname,tb_book.bname,tb_borrow.borrdataFROMtb_reader,tb_borrow,tb_bookWHEREtb_book.bno=tb_borrow.bnoANDtb_borrow.rno=tb_reader.rnoFORREADONLYOPENB_cursorFETCHFROMB_cursorINTO@B_rno,@B_rname,@B_bname,@B_borrdataWHILE@@FETCH_STATUS=0BEGINPRINT'读者编号:'+@B_rno+''+'读者姓名:'+@B_rno+''+'书名:'+@B_bname+''+cast(@B_borrdataASVARCHAR(4))FETCHFROMB__cursorINTO@B_rno,@B_rno,@B_bname,@B_borrdataENDCLOSEB__cursorDEALLOCATEB__cursor2、通过游标将图书信息表中记录号为5的图书的单价改为50。DECLAREbook_cursorSCROLLCURSORFORSELECT*FROMtb_bookFORUPDATEOFtb_book.bpriceOPENbook_cursorFETCHABSOLUTE5FROMbook_cursorUPDATEtb_bookSETtb_book.bprice='50'WHERECURRENTOFbook_cursorFETCHABSOLUTE5FROMbook_cursorCLOSEbook_cursorDEALLOCATEbook_cursor四、实验总结通过此次实验我掌握了创建、执行、修改和删除存储过程的方法,还有创建游标和使用游标修改表中数据的方法。在做“2、通过游标将图书信息表中记录号为5的图书的单价改为50”这道题时,出现错误,错误是此游标是只读的,没有办法修改,后来通过查询一些资料知道了如何解此错误,在图书信息表中设置一个主键就可以了。这次的实验让我对数据库有了更深的了解,希望在以后的学习中,数据库的运用可以对我有更多的帮助。
本文标题:数据库编程
链接地址:https://www.777doc.com/doc-5177190 .html