《数据库编程(共5页).doc》由会员分享,可在线阅读,更多相关《数据库编程(共5页).doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上北 华 航 天 工 业 学 院数据库原理与应用实验报告报告题目: 数据库编程 作者所在系部: 计算机科学与工程 作者所在专业: 网络工程 作 者 学 号 : 作 者 姓 名 : 吴淑婷 指导教师姓名: 张云峰 完 成 时 间 : 2012-6-8 北华航天工业学院教务处制数据库编程一、 实验目的1、 掌握存储过程的概念、优点、特点及用途;2、 掌握创建、执行、修改和删除存储过程的方法;3、 掌握创建游标和使用游标修改表中数据的方法。二、 实验内容(一)附加上次实验所创建的数据库“db_Library”,并回顾该库的数据表信息。(二)练习创建和管理存储过程1、创建一个名
2、为“PROC_系部读者借阅信息”的无参存储过程,要求显示计算机系读者2010-1-1以后借阅的图书信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段。创建完成之后,执行上述存储过程,观察执行结果。2、修改上述的存储过程为带参的存储过程,要求根据所提供的系部名称和时间,查询出该系部在该时间之后借阅了图书的读者信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段,并按照读者姓名升序排列,并将读者的总数作为输出参数返回。创建完成之后,执行上述存储过程,观察执行结果。3、创建一个名为“Proc_图书借阅信息”的存储过程,要求根据所提供的图书名称或编号,查询出借阅了该图书的读者信息,包括“
3、读者编号”、“读者姓名”、“学号”、“借阅日期”,并返回该存储过程的执行状态。(其中,图书名称或编号可能为空,图书名称采用模糊查询)创建完成之后,执行上述存储过程,观察执行结果。4、创建一个名为“Proc_删除读者信息”的存储过程,要求根据所提供的读者编号,删除该编号所对应的读者,如果不存在此编号的读者,则显示“该编号的读者不存在!”。创建完成之后,执行上述存储过程,观察执行结果。5、创建一个名为“Proc_修改借阅信息”的存储过程,要求根据所提供的读者编号和天数,将该读者的归还日期增加相应的天数,如果不存在该读者的借阅信息,则显示“该读者没有借阅图书!”。创建完成之后,执行上述存储过程,观察
4、执行结果。6、删除存储过程“Proc_修改借阅信息”。(三)练习创建游标1、定义一个游标,将有借书记录的读者的借阅信息(包括读者编号、读者姓名、书名、借阅日期)显示出来。2、通过游标将图书信息表中记录号为5的图书的单价改为50。三、 实验步骤(二)练习创建和管理存储过程1、创建一个名为“PROC_系部读者借阅信息”的无参存储过程,要求显示计算机系读者2010-1-1以后借阅的图书信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段。USE db_Library1GO CREATE PROCEDURE PROC_系部读者借阅信息AS SELECT rname AS 读者姓名,bno AS
5、图书编号,borrdata AS 借阅日期FROM tb_reader , tb_borrowWHERE tb_reader.rno=tb_borrow.rno AND borrdata2010-1-1 AND rindept=计算机系2、修改上述的存储过程为带参的存储过程,要求根据所提供的系部名称和时间,查询出该系部在该时间之后借阅了图书的读者信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段,并按照读者姓名升序排列,并将读者的总数作为输出参数返回。USE db_Library1GO CREATE PROCEDURE PROC_系部读者借阅信息r_count int outputAS
6、 SELECT rname AS 读者姓名,bno AS 图书编号,borrdata AS 借阅日期,count(rname)FROM tb_reader , tb_borrowWHERE tb_reader.rno=tb_borrow.rno AND borrdata2010-1-1 AND rindept=计算机系GROUP BY tb_reader.rname,tb_borrow.bno,tb_borrow.borrdataORDER BY rnameRETURN r_countGO3、创建一个名为“Proc_图书借阅信息”的存储过程,要求根据所提供的图书名称或编号,查询出借阅了该图书的
7、读者信息,包括“读者编号”、“读者姓名”、“学号”、“借阅日期”,并返回该存储过程的执行状态。(其中,图书名称或编号可能为空,图书名称采用模糊查询)创建完成之后,执行上述存储过程,观察执行结果。USE db_Library1GO CREATE PROCEDURE PROC_图书借阅信息AS SELECT rstuno AS 学号,tb_reader.rno AS 读者编号,rname AS 读者姓名,borrdata AS 借阅日期FROM tb_reader , tb_borrow,tb_bookWHERE tb_reader.rno=tb_borrow.rno AND tb_borrow.
8、bno=tb_book.bnoGO4、创建一个名为“Proc_删除读者信息”的存储过程,要求根据所提供的读者编号,删除该编号所对应的读者,如果不存在此编号的读者,则显示“该编号的读者不存在!”。创建完成之后,执行上述存储过程,观察执行结果。CREATE PROCEDURE Proc_删除读者信息rno CHAR(6)ASIF EXISTS(SELECT rno FROM tb_reader WHERE rno=rno)BEGINDELETE FROM tb_borrow WHERE rno=rnoDELETE FROM tb_reader WHERE rno=rnoENDELSEPRINT 该
9、编号的读者不存在!EXEC Proc_删除读者信息R10010 ;EXEC Proc_删除读者信息R11010 ;5、创建一个名为“Proc_修改借阅信息”的存储过程,要求根据所提供的读者编号和天数,将该读者的归还日期增加相应的天数,如果不存在该读者的借阅信息,则显示“该读者没有借阅图书!”。创建完成之后,执行上述存储过程,观察执行结果。CREATE PROC Proc_修改借阅信息dzbh CHAR(6),tsh INTASBEGIN IF EXISTS(SELECT * FROM tb_borrow WHERE rno=dzbh) UPDATE tb_borrow SET lenddata
10、=dateadd(day,tsh,lenddata) WHERE rno=dzbh ELSE PRINT 该读者没有借阅图书!ENDEXEC Proc_修改借阅信息tsh=3,dzbh=R10003EXEC Proc_修改借阅信息tsh=3,dzbh=R100116、删除存储过程“Proc_修改借阅信息”。DROP PROCEDURE Proc_修改借阅信息(三)练习创建游标1、定义一个游标,将有借书记录的读者的借阅信息(包括读者编号、读者姓名、书名、借阅日期)显示出来。DECLARE B_rno CHAR(6),B_rname CHAR(10),B_bname CHAR(30),B_borr
11、data DATETIMEDECLARE B_cursor SCROLL CURSOR FOR SELECT tb_reader.rno,tb_reader.rname,tb_book.bname,tb_borrow.borrdata FROM tb_reader,tb_borrow,tb_book WHERE tb_book.bno=tb_borrow.bno AND tb_borrow.rno=tb_reader.rnoFOR READ ONLYOPEN B_cursorFETCH FROM B_cursor INTO B_rno,B_rname,B_bname,B_borrdata WH
12、ILE FETCH_STATUS=0 BEGIN PRINT 读者编号:+B_rno+ +读者姓名:+B_rno+ + 书名:+B_bname+ + cast (B_borrdata AS VARCHAR(4) ) FETCH FROM B_cursor INTO B_rno,B_rno,B_bname,B_borrdata ENDCLOSE B_cursorDEALLOCATE B_cursor2、通过游标将图书信息表中记录号为5的图书的单价改为50。DECLARE book_cursor SCROLL CURSOR FORSELECT * FROM tb_book FOR UPDATE O
13、F tb_book.bpriceOPEN book_cursorFETCH ABSOLUTE 5 FROM book_cursorUPDATE tb_bookSET tb_book.bprice = 50 WHERE CURRENT OF book_cursorFETCH ABSOLUTE 5 FROM book_cursorCLOSE book_cursorDEALLOCATE book_cursor四、 实验总结通过此次实验我掌握了创建、执行、修改和删除存储过程的方法,还有创建游标和使用游标修改表中数据的方法。在做“2、通过游标将图书信息表中记录号为5的图书的单价改为50”这道题时,出现错误,错误是此游标是只读的,没有办法修改,后来通过查询一些资料知道了如何解此错误,在图书信息表中设置一个主键就可以了。这次的实验让我对数据库有了更深的了解,希望在以后的学习中,数据库的运用可以对我有更多的帮助。专心-专注-专业
限制150内