- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
山西大学计算机与信息技术学院
姓 名 张浩田学 号 专业班级 课程名称 实验日期 2016/12/12 指导教师 王俊红 成 绩 实验名称
一、实验目的:
二、实验原理:
三、实验步骤:
实验时用到的SC表的数据 实验时用到的Student表的数据
?游标声明
?打开游标
?读取数据
?关闭游标
?释放游标
使用游标的几个步骤:
1、声明游标。使用T-SQL语句生成一个结果集,并且定义游标的特征,如游标中的记录是否可以修改;
2、打开游标
3、推进游标指针,从游标的结果集中提取数据,从游标中检索一行或多行数据成为提取数据。
4、逐行处理游标指针所指向的行数据。
5、关闭和释放游标。
例1:
利用标准方式声明一个名称为“student”的游标
use TestDB
declare student cursor
for
select Sno,Sname,Sage
FROM Student
WHERE Sage=19
FOR READ ONLY
GO
例2:
声明一个名称为Xuanke的游标
use TestDB
DECLARE XUANKE CURSOR
DYNAMIC
FOR
SELECT Sno,Grade
FROM SC
WHERE Cno=2
FOR UPDATE OF Sno
GO
打开XUANKE游标
OPEN XUANKE
GO
从XUANKE游标中读取数据
FETCH NEXT FROM XUANKE
GO
关闭XUANKE游标
CLOSE XUANKE
删除XUANKE游标
DEALLOCATE XUANKE
例3:
声明一个游标,可前后滚动,可对选课表2中的成绩进行修改
use TestDB
DECLARE XK CURSOR
FOR SELECT* FROM SC
FOR UPDATE OF Grade
GO
打开游标XK
OPEN XK
SELECT 游标数据行数=@@CURSOR_ROWS@@CURSOR_ROWS返回最后打开的游标中当前存在的合格行的数量。
返回值为-m,表示游标被异步填充。返回值-m是键集中当前的行数。
返回值为-1,表示游标为动态。因为游标可反映所有更改,所以符合游标的行数不断变化。因此永远不能确定地说所有符合条件的行均已检索到。
返回值为0,没有被打开的游标,没有符合最后打开的游标的行,或最后打开的游标已被关闭或被释放。
返回值为n,游标已完全填充。返回值n是在游标中的总行数。
@@ROWCOUNT 返回受上一语句影响的行数。任何不返回行的语句将这一变量设置为FETCH NEXT FROM XK
关闭游标XK
CLOSE XK
例4:
为学生表中姓“李”的同学的行声明游标,并使用FETCH NEXT逐个提取这些行。(SCROLL 指定所有的提取选项FIRST, LAST, PRIOR, NEXT, RELATIVE, ABSOLUTE均可使用)
use TestDB
DECLARE STU SCROLL CURSOR
FOR
SELECT Sno
FROM Student
WHERE Sname LIKE 李%
ORDER BY Sno
GO
OPEN STU
FETCH NEXT FROM STU
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM STU
END
@@FETCH_STATUS返回针对连接当前打开的任何游标发出的上一条游标 FETCH 语句的状态。 0 FETCH 语句成功。-1 FETCH 语句失败或行不在结果集中。 -2 提取的行不存在use TestDB
declare student scroll cursor
for
select Sname,Sage
FROM Student
open student
fetch last from student
fetch prior from student
fetch absolute 2 from student
fetch relative 3 from student
fetch relative -2 from student
使用游标修改数据
UPDATE和DELETE都是集合操作语句,如果只想修改或删除其中某个记录,则需要用带游标的SELECT语句查出所有满足条件的记录,从中进一步找出要修改或删除的记录,然后用CURRENT形式的UPDATE 和DELETE 语句修改或删除之。具体步骤:
1、用DECLARE语句声明游标,并指定FOR UPDATE OF column_name_lis
文档评论(0)