欢迎来到天天文库
浏览记录
ID:38705918
大小:144.00 KB
页数:8页
时间:2019-06-17
《数据库系统概论实验报告三》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、山西大学计算机与信息技术学院姓名张浩田学号201421027专业班级计科三班课程名称数据库实验实验日期2016/12/12指导教师王俊红成绩实验名称实验三游标的使用一、实验目的:•掌握游标的使用方法•掌握使用游标逐行操作SELECT语句结果集的数据的技能二、实验内容及原理:游标(Cursor)它使用户可逐行访问由SQLServer返回的结果集。游标的如下优点,这些优点使游标在实际应用中发挥了重要作用:1)允许程序对由查询语句select返回的行集合中的每一行执行相同或不同的操作,而不是对整个行集合执行同一个操作。2)提供对基于游标位置的表中的行进行删除和更新的能力。3)游标实
2、际上作为面向集合的数据库管理系统(RDBMS)和面向行的程序设计之间的桥梁,使这两种处理方式通过游标沟通起来。三、实验步骤:实验时用到的SC表的数据实验时用到的Student表的数据•游标声明•打开游标•读取数据•关闭游标•释放游标使用游标的几个步骤:1、声明游标。使用T-SQL语句生成一个结果集,并且定义游标的特征,如游标中的记录是否可以修改;2、打开游标3、推进游标指针,从游标的结果集中提取数据,从游标中检索一行或多行数据成为提取数据。4、逐行处理游标指针所指向的行数据。5、关闭和释放游标。例1:利用标准方式声明一个名称为“student”的游标useTestDBdecl
3、arestudentcursorforselectSno,Sname,SageFROMStudentWHERESage=19FORREADONLYGO例2:声明一个名称为Xuanke的游标useTestDBDECLAREXUANKECURSORDYNAMICFORSELECTSno,GradeFROMSCWHERECno='2'FORUPDATEOFSnoGO打开XUANKE游标OPENXUANKEGO从XUANKE游标中读取数据FETCHNEXTFROMXUANKEGO关闭XUANKE游标CLOSEXUANKE删除XUANKE游标DEALLOCATEXUANKE例3:声明一
4、个游标,可前后滚动,可对选课表2中的成绩进行修改useTestDBDECLAREXKCURSORFORSELECT*FROMSCFORUPDATEOFGradeGO打开游标XKOPENXKSELECT'游标数据行数'=@@CURSOR_ROWS全局变量@@CURSOR_ROWS返回最后打开的游标中当前存在的合格行的数量。返回值为-m,表示游标被异步填充。返回值-m是键集中当前的行数。返回值为-1,表示游标为动态。因为游标可反映所有更改,所以符合游标的行数不断变化。因此永远不能确定地说所有符合条件的行均已检索到。返回值为0,没有被打开的游标,没有符合最后打开的游标的行,或最后打
5、开的游标已被关闭或被释放。返回值为n,游标已完全填充。返回值n是在游标中的总行数。@@ROWCOUNT返回受上一语句影响的行数。任何不返回行的语句将这一变量设置为0.从游标XK中读取数据FETCHNEXTFROMXK关闭游标XKCLOSEXK例4:为学生表中姓“李”的同学的行声明游标,并使用FETCHNEXT逐个提取这些行。(SCROLL指定所有的提取选项FIRST,LAST,PRIOR,NEXT,RELATIVE,ABSOLUTE均可使用)useTestDBDECLARESTUSCROLLCURSORFORSELECTSnoFROMStudentWHERESnameLIKE
6、'李%'ORDERBYSnoGOOPENSTUFETCHNEXTFROMSTUWHILE@@FETCH_STATUS=0BEGINFETCHNEXTFROMSTUEND@@FETCH_STATUS返回针对连接当前打开的任何游标发出的上一条游标FETCH语句的状态。0FETCH语句成功。-1FETCH语句失败或行不在结果集中。-2提取的行不存在例5:创建一个SCROLL游标,使其通过LAST,PRIOR,RELATIVE,ABSOLUTE选项支持所有滚动能力。NEXT:返回当前行的下一行,并使其为当前行。如果FETCHNEXT是对游标的第一次提取操作,则返回结果集中的第一行。N
7、EXT为默认的游标提取选项。PRIOR:返回当前行的前一行,并使其为当前行。如果FETCHPRIOR是对游标的第一次提取操作,则没有行返回并且游标置于第一行之前。FIRST:返回游标中的第一行并将其作为当前行。LAST:返回游标中的最后一行并将其作为当前行。ABSOLUTE{n/@nvar}:如果n或@nvar为正数,返回从游标头开始的第n行并将返回的行变成新的当前行;如果n或@nvar为负数,返回游标尾之前的第n行并将返回的行变成新的当前行;如果n或@nvar为0,则没有行返回。n必须为整形常量且@n
此文档下载收益归作者所有