欢迎来到天天文库
浏览记录
ID:11668096
大小:703.50 KB
页数:8页
时间:2018-07-13
《实验报告3游标的使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、山西大学计算机与信息技术学院实验报告姓名许小珍学号2010242097专业班级软件一班课程名称数据库原理实验实验日期2012.04.17成绩指导教师庞继芳批改日期实验名称游标的使用一、实验目的:掌握游标的使用方法;掌握使用游标逐行操作SELECT语句结果集的数据的技能。二、实验内容:游标声明;打开游标;读取数据;关闭游标;释放游标三、实验步骤:1、声明游标。使用T-SQL语句生成一个结果集,并且定义游标的特征,如游标中的记录是否可以修改;2、打开游标3、推进游标指针,从游标的结果集中提取数据,从游标中检索一行或多行数据成
2、为提取数据。4、逐行处理游标指针所指向的行数据。5、关闭和释放游标。例1:查看学生表中年龄为19的学生的学号和姓名。--声明游标--usestu_DBdeclarestuCurcursorforselectsno,snamefromstudentwheresage=19forreadonlygo--打开游标openstuCurgo--处理游标中的数据fetchnextfromstuCurgo--关闭游标closestuCur--释放游标deallocatestuCur如图:例2:声明一个名称为Xuanke的游标DECLA
3、REXUANKECURSORDYNAMICFORSELECTsno,gradeFROMscWHEREcno='02002'FORUPDATEOFsnoGOOPENXUANKEGOFETCHNEXTFROMXUANKEGOCLOSEXUANKEDEALLOCATEXUANKE例3:声明一个游标,可前后滚动,可对选课表2中的成绩进行修改use学生选课DECLAREXKCURSORFORSELECT*FROMscFORUPDATEOFgradeOPENXKSELECT'游标数据行数'=@@CURSOR_ROWSFETCHNEX
4、TFROMXKCLOSEXK例4:为学生表中姓“李”的同学的行声明游标,并使用FETCHNEXT逐个提取这些行。(SCROLL指定所有的提取选项FIRST,LAST,PRIOR,NEXT,RELATIVE,ABSOLUTE均可使用)usescDECLARESTUSCROLLCURSORFORSELECTsnameFROMstudentWHEREsnameLIKE'李%'ORDERBYsnameGOOPENSTUFETCHNEXTFROMSTUWHILE@@FETCH_STATUS=0BEGINFETCHNEXTFROMS
5、TUEND@@FETCH_STATUS返回针对连接当前打开的任何游标发出的上一条游标FETCH语句的状态。0FETCH语句成功。-1FETCH语句失败或行不在结果集中。-2提取的行不存在例5:创建一个SCROLL游标,使其通过LAST,PRIOR,RELATIVE,ABSOLUTE选项支持所有滚动能力。NEXT:返回当前行的下一行,并使其为当前行。如果FETCHNEXT是对游标的第一次提取操作,则返回结果集中的第一行。NEXT为默认的游标提取选项。PRIOR:返回当前行的前一行,并使其为当前行。如果FETCHPRIOR是
6、对游标的第一次提取操作,则没有行返回并且游标置于第一行之前。FIRST:返回游标中的第一行并将其作为当前行。LAST:返回游标中的最后一行并将其作为当前行。use学生选课declarestudentscrollcursorforselectsname,sageFROMstudentopenstudentfetchlastfromstudentfetchpriorfromstudentfetchabsolute2fromstudentfetchrelative3fromstudentfetchrelative-2froms
7、tudent使用游标修改数据UPDATE和DELETE都是集合操作语句,如果只想修改或删除其中某个记录,则需要用带游标的SELECT语句查出所有满足条件的记录,从中进一步找出要修改或删除的记录,然后用CURRENT形式的UPDATE和DELETE语句修改或删除之。具体步骤:1、用DECLARE语句声明游标,并指定FORUPDATEOFcolumn_name_list。2、用OPEN语句打开游标。3、用FETCH语句推进游标指针。4、检查记录是否是需要修改或删除的记录。5、处理完毕用CLOSE语句关闭游标。用户可以在UPD
8、ATE或DELETE语句中使用游标来更新或删除表或视图中的行,但不能用来插入新行。例6:统计“数据结构”课程考试成绩的各分数段的分布情况。usescdeclarecoursecursorforselectgradefromscwherecno=(selectcnofromcoursewherecname='数据结构'
此文档下载收益归作者所有