




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、山西大学计算机与信息技术学院实验报告姓 名许小珍学 号2010242097专业班级软件一班课程名称数据库原理实验实验日期2012.04.17成 绩指导教师庞继芳批改日期实验名称游标的使用一、实验目的: 掌握游标的使用方法; 掌握使用游标逐行操作SELECT语句结果集的数据的技能。 2、 实验内容: 游标声明;打开游标;读取数据;关闭游标;释放游标3、 实验步骤: 1、声明游标。使用T-SQL语句生成一个结果集,并且定义游标的特征,如游标中的记录是否可以修改; 2、打开游标 3、推进游标指针,从游标的结果集中提取数据,从游标中检索一行或多行数据成为提取数据。 4、逐行处理游标指针所指向的行数据。
2、 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
3、 scWHERE cno='02002'FOR 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:为学生表中姓“李”的同学的行声明游标,并使用
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返回针对连接当前打开的任何游标发出的上一条游标
5、FETCH 语句的状态。 0 FETCH 语句成功。-1 FETCH 语句失败或行不在结果集中。 -2 提取的行不存在例5:创建一个SCROLL游标,使其通过LAST, PRIOR, RELATIVE, ABSOLUTE 选项支持所有滚动能力。NEXT:返回当前行的下一行,并使其为当前行。如果FETCH NEXT是对游标的第一次提取操作,则返回结果集中的第一行。NEXT为默认的游标提取选项。PRIOR:返回当前行的前一行,并使其为当前行。如果FETCH PRIOR是对游标的第一次提取操作,则没有行返回并且游标置于第一行之前。FIRST:返回游标中的第一行并将其作为当前行。LAST:返回游标中的
6、最后一行并将其作为当前行。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语句查出所有满足条
7、件的记录,从中进一步找出要修改或删除的记录,然后用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 sele
8、ct 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 coursedeclar
9、e 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
10、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:定义一个游标,将学生表中所有学生的姓名、年龄显示
11、出来。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)
12、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, RELATIVE, ABS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子商务师实操案例分析试题及答案
- 年度经理工作规划计划
- 公司生产工作计划提升员工技能
- 开发新市场的战略规划计划
- 电子商务标识与信誉构建试题及答案
- 学校特色品牌建设计划
- 秋季节能减排活动计划
- 物流供应链的环节分析国际物流师试题及答案
- 2024物理期末复习试题及答案
- 持续提升的预算员试题及答案
- 安全生产、文明施工资金保障制度11142
- 安徽省C20教育联盟2024-2025学年九年级下学期3月月考数学试题 (原卷版+解析版)
- 2025新疆机场(集团)有限责任公司阿克苏管理分公司第一季度招聘(75人)笔试参考题库附带答案详解
- 品质异常处罚细则及奖罚制度
- 二年级下册心理健康教案-第二十四课 帮爸爸妈妈分担 妈妈谢谢您|北师大版
- 人教PEP版五年级英语下册-《课时学练测》全册含答案
- 锅炉水冷壁安装作业指导书
- 《雷锋叔叔_你在哪里》说课稿
- 赞美诗歌400首全集
- 横向分布系数计算剖析
- 北京市建筑施工作业人员安全生产知识教育培训考核试卷A及答案知识讲解
评论
0/150
提交评论