一.游标的作用:
定位到结果集中的某一行(结果集:在完成了数据库的操作之后出现的所有的结果的集合)
二.游标分为三类
1.静态游标(static):操作游标时即使数据发生变化,游标中的数据也不会发生变化
2.动态游标(dynamic):操作游标时若数据发生变化,则游标中数据同样改变
3.键集驱动游标(keyset):在操作游标时,被标记的列,其他列和游标中的数据改变,游标中的数据不变
三.游标的使用
1.创建游标
语法为:
declare 游标名 cursor scroll for select 创建游标的列名 from 创建游标的表名
难理解部分的解释:
cursor为游标,表示我们将要创建的数据的类型
scroll为一个可选参数,表示是否能够滚动使用游标,若不加上此参数则游标只能向下移动
2.打开游标
语法为:
open 游标名
3.关闭游标
语法为:
close 游标名
4.删除游标
语法为:
deallocate 游标名
5.使用游标提取数据
例如:
--提取第一行的数据
fetch first from test
--test是我创建的游标的名字
--提取最后一行的数据
fetch last from test
--提取第二行的数据
fetch absolute 2 from test
--提取当前游标所在行下移两行的数据
fetch relative 2 from test
--提取当前游标所在行下移一行的数据
fetch next from test
--提取当前游标所在行上移一行的数据
fetch prior from test
6.游标的具体使用实例
(1).使用游标提取数据之后将数据存入变量之中,用于查询该列信息
declare @search varchar(50) --创建一个类型为varchar,大小为50,名字为search的变量
fetch absolute 2 from test into @search --将第二行的数据提取到search变量之中
select * from Student where StuId = @search --在Student表中查找与存入变量之中的数据相同的具体数据
(2).遍历游标
declare @search varchar(50) --定义一个类型为varchar,大小为50,名字为search的变量
fetch absolute 1 from test into @search --提取出第一行的数据到search变量中进行存储
--在我们使用游标时需要注意有一全局变量名字为fetch_status表示数据是否提取成功,若为0,则表示提取成功,若为-1,则表示提取失败
while @@fetch_status = 0 使用while循环进行遍历
begin
print @search --打印提取出的数据
fetch next from test into @search --再提取下一行的数据
end
(3).使用游标进行数据的修改和删除
--修改数据
fetch absolute 3 from test --提取出第三行的游标数据
update Student set Score = 100 where current of test --修改游标所在行的学生的成绩数据为100
--删除数据
fetch absolute 3 from test --提取出第三行的游标数据
delete from student where current of test --删除游标所在行的学生数据
7.指向多列数据的游标
(1).创建语法:
declare 游标名 cursor scroll for select 列名1,列名2...列名n from 表名
(2).使用
创建与列数相同数量的变量数,使用不同的变量对游标进行操作
标签:search,--,SQLServer,游标,test,数据,fetch From: https://blog.csdn.net/NaZiMeKiY/article/details/138368916