您的位置:首页 > 数据库

SQL利用游标遍历所有数据并更新所有数据

2012-12-03 09:39 639 查看
如果对数据进行遍历循环操作,通过SQL的游标就可以实现,下面就为您详细介绍该方法,供您参考,希望对您学习SQL数据库能够有所帮助。

SQL游标的优点是可以方便从一个结果集中进行循环遍历数据在进行操作。
1、游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;
2、它还提供对基于游标位置而对表中数据进行删除或更新的能力;
3、游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。
然而游标也有缺点——复杂和低效,是游标的最大缺点,也是致使很多时候在使用存储过程中没有想到游标的主要原因。

--将book表中的LookCount(int型)字段加上800-1000的随机整数
declare @bid int
declare cur cursor
read_only
for select bid from dbo.Book
open cur
fetch next from cur into @bid
while(@@fetch_status=0)
begin
update dbo.Book set LookCount=LookCount+cast((rand()*(1000-800)+800) as int) where bid=@bid
fetch next from cur into @bid
end
close cur
deallocate cur


使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。
由于 @@FETCH_STATUS 对于在一个连接上的所有游标是全局性的,要小心使用 @@FETCH_STATUS 。在执行一条 FETCH 语句后,必须在对另一游标执行另一 FETCH 语句前测试 @@FETCH_STATUS 。在任何提取操作出现在此连接上前,@@FETCH_STATUS 的值没有定义。
例如,用户从一个游标执行一条 FETCH 语句,然后调用一个存储过程,此存储过程打开并处理另一个游标的结果。当控制从被调用的存储过程返回后,@@FETCH_STATUS 反映的是在存储过程中执行的最后的 FETCH 语句的结果,而不是在存储过程被调用之前的 FETCH 语句的结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐