




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
山西大学计算机与信息技术学院实验报告姓 名许小珍学 号2010242097专业班级软件一班课程名称数据库原理实验实验日期2012.04.17成 绩指导教师庞继芳批改日期实验名称游标的使用一、实验目的: 掌握游标的使用方法; 掌握使用游标逐行操作SELECT语句结果集的数据的技能。 2、 实验内容: 游标声明;打开游标;读取数据;关闭游标;释放游标3、 实验步骤: 1、声明游标。使用T-SQL语句生成一个结果集,并且定义游标的特征,如游标中的记录是否可以修改; 2、打开游标 3、推进游标指针,从游标的结果集中提取数据,从游标中检索一行或多行数据成为提取数据。 4、逐行处理游标指针所指向的行数据。 5、关闭和释放游标。 例1:查看学生表中年龄为19的学生的学号和姓名。-声明游标-use stu_DBdeclare stuCur cursor forselect sno,sname from studentwhere sage=19for read onlygo -打开游标open stuCurgo-处理游标中的数据fetch next from stuCurgo-关闭游标close stuCur-释放游标deallocate stuCur如图:例2:声明一个名称为Xuanke的游标DECLARE XUANKE CURSORDYNAMIC FOR SELECT sno,gradeFROM scWHERE cno=02002FOR UPDATE OF snoGOOPEN XUANKEGOFETCH NEXT FROM XUANKEGOCLOSE XUANKEDEALLOCATE XUANKE例3:声明一个游标,可前后滚动,可对选课表2中的成绩进行修改use 学生选课DECLARE XK CURSORFOR SELECT * FROM scFOR UPDATE OF gradeOPEN XKSELECT 游标数据行数=CURSOR_ROWSFETCH NEXT FROM XKCLOSE XK例4:为学生表中姓“李”的同学的行声明游标,并使用FETCH NEXT逐个提取这些行。(SCROLL 指定所有的提取选项FIRST, LAST, PRIOR, NEXT, RELATIVE, ABSOLUTE均可使用)use scDECLARE STU SCROLL CURSOR FOR SELECT snameFROM studentWHERE sname LIKE 李%ORDER BY snameGOOPEN STU FETCH NEXT FROM STUWHILE FETCH_STATUS=0BEGINFETCH NEXT FROM STUENDFETCH_STATUS返回针对连接当前打开的任何游标发出的上一条游标 FETCH 语句的状态。 0 FETCH 语句成功。-1 FETCH 语句失败或行不在结果集中。 -2 提取的行不存在例5:创建一个SCROLL游标,使其通过LAST, PRIOR, RELATIVE, ABSOLUTE 选项支持所有滚动能力。NEXT:返回当前行的下一行,并使其为当前行。如果FETCH NEXT是对游标的第一次提取操作,则返回结果集中的第一行。NEXT为默认的游标提取选项。PRIOR:返回当前行的前一行,并使其为当前行。如果FETCH PRIOR是对游标的第一次提取操作,则没有行返回并且游标置于第一行之前。FIRST:返回游标中的第一行并将其作为当前行。LAST:返回游标中的最后一行并将其作为当前行。use 学生选课declare student scroll cursor for select sname,sageFROM studentopen studentfetch last from studentfetch prior from studentfetch absolute 2 from studentfetch relative 3 from studentfetch relative -2 from student使用游标修改数据UPDATE和DELETE都是集合操作语句,如果只想修改或删除其中某个记录,则需要用带游标的SELECT语句查出所有满足条件的记录,从中进一步找出要修改或删除的记录,然后用CURRENT形式的UPDATE 和DELETE 语句修改或删除之。具体步骤:1、用DECLARE语句声明游标,并指定FOR UPDATE OF column_name_list。2、用OPEN语句打开游标。3、用FETCH语句推进游标指针。4、检查记录是否是需要修改或删除的记录。5、处理完毕用CLOSE语句关闭游标。用户可以在UPDATE 或DELETE 语句中使用游标来更新或删除表或视图中的行,但不能用来插入新行。例6:统计“数据结构”课程考试成绩的各分数段的分布情况。use scdeclare course cursor for select grade from scwhere cno=(select cno from course where cname=数据结构)declare p_100 smallint,p_90 smallint,p_80 smallintdeclare p_70 smallint,p_60 smallint,p_others smallintdeclare p_grade smallintset p_100=0set p_90=0 set p_80=0set p_70=0set p_60=0set p_others=0set p_grade=0open coursedeclare p_100 smallint,p_90 smallint,p_80 smallintdeclare p_70 smallint,p_60 smallint,p_others smallintdeclare p_grade smallintloop:fetch next from course into p_gradeif (p_grade=100)set p_100=p_100+1else if (p_grade=90)set p_90=p_90+1else if (p_grade=80)set p_80=p_80+1else if (p_grade=70)set p_70=p_70+1else if (p_grade=60)set p_60=p_60+1else set p_others=p_others+1if (FETCH_STATUS =0) goto loop print str(p_100)+,+str(p_90)+,+str(p_80)+,print str(p_70)+,+str(p_60)+,+str(p_others)close coursedeallocate course例7:定义一个游标,将学生表中所有学生的姓名、年龄显示出来。use 学生选课go declare sname varchar(50),sage int /声明变量declare stud scroll cursor forselect sname,sage from student for read onlyopen studdeclare sname varchar(50),sage int /声明变量fetch from stud into sname,sagewhile FETCH_STATUS=0begin print 学生姓名:+sname+ +学生年龄:+str(sage) fetch from stud into sname,sageendclose studdeallocate stud例8:通过游标将学生表中第5位学生的年龄由19改为21use 学生选课go declare stu scroll cursor for select sname, sage from studentfor update of sageopen stufetch absolute 3 from stuupdate studentset sage=23where current of stufetch absolute 3 from stu close studeallocate stu4、 结果分析 1. 声明游标时名字不可以重复。2. 声明游标定义完变量后,读取数据时还得声明变量。3. UPDATE和DELETE都是集合操作语句,如果只想修改或删除其中某个记录,则需要用带游标的SELECT语句查出所有满足条件的记录,从中进一步找出要修改或删除的记录,然后用CURRENT形式的UPDATE 和DELETE 语句修改或删除之。4. 用户可以在UPDATE 或DELETE 语句中使用游标来更新或删除表或视图中的行,但不能用来插入新行。5. 创建一个SCROLL游标,使其通过LAST, PRIOR, RELATIV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东华建铝业考试试题及答案
- 科学实验室培训
- 如何构建文明健康绿色环保的生活方式
- 2025年中国男士不可充电头灯行业市场全景分析及前景机遇研判报告
- 自然生命课程中班课件
- 基于化学核心素养的“教、学、评”一体化教学设计
- 客服培训周会汇报
- 成本控制与成本控制效果评估合同
- 绿色能源场地租赁合同转让与环保责任协议
- 智能化彩钢瓦施工与节能改造合同
- 医疗废物交接与记录的重要性
- 个人极端事件防范应急预案
- (环境管理)环境保护与水土保持监理实施细则
- 军事训练伤的防治
- 国开《化工安全技术》形考任务1-4答案
- 安全生产月“一把手”讲安全课件
- 产业命题赛道命题解决对策参考模板
- 985、211和双一流大学名单
- 三人合伙经营协议书电子版(2篇)
- 汽车产品认证
- 蛇类解剖生理特征(特种宠物疾病防治)
评论
0/150
提交评论