首先,关于什么是游标大家可以看看这篇文章,介绍得非常详细!!
SQL Server基础之游标


下面是我自己的应用场景……

有个需求,需要把数据库表里面某一个字段的值设为随机不重复的值。

表是这样的:

这是一个爬虫抓取网址表。其中 CatchOrder 这一列就是要修改的列。CatchOrder 表示的是抓取顺序,本来这个值是等于 WebSiteId 的值的。新需求就是要把这一列的值修改为有限值范围内的随机不重复的值。
于是我的思路是把它改成随机查找出的 WebSiteId 值【用 order by NEWID() 实现】,这样就肯定能保证不会重复了。【因为 WebSiteId 列是这个表的唯一索引。】

下面就直接上代码了:

declare @websiteId int=-1
declare @catchOrder int=-1 -- 声明游标并指定值
declare unorder_catchOrder_cursor cursor
for
select WebSiteId from
dbo.Reader_WebSite
order by NEWID(); -- 随机查出WebSiteId作为要修改的CatchOrder的新顺序 declare order_websiteId_cursor cursor
for
select WebSiteId from
dbo.Reader_WebSite; -- 按顺序查出WebSiteId值用于定位 -- 打开游标
open unorder_catchOrder_cursor;
open order_websiteId_cursor; -- 获取游标值
fetch next from unorder_catchOrder_cursor into @catchOrder;
fetch next from order_websiteId_cursor into @websiteId; while @@FETCH_STATUS=0 -- 判断fetch语句是否执行成功
begin
update dbo.Reader_WebSite set CatchOrder=@catchOrder where WebSiteId=@websiteId; -- 修改值 -- 获取下一个游标值
fetch next from unorder_catchOrder_cursor into @catchOrder;
fetch next from order_websiteId_cursor into @websiteId;
end -- 关闭游标
close unorder_catchOrder_cursor;
close order_websiteId_cursor; -- 释放游标
deallocate unorder_catchOrder_cursor;
deallocate order_websiteId_cursor;

总结一下就是几个关键点:
1. 声明游标
2. 指定游标结果集(查询出的结果表)
3. 打开游标
4. 使用游标(通过 fetch next from cursor_name 获取值)
5. 循环时可以使用 @@FETCH_STATUS=0 判断是否已经到达了最后一项
6. 最后用完要关闭与释放游标

SQL SERVER 游标的使用的更多相关文章

  1. SQL Server 游标运用:鼠标轨迹字符串分割

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 游标模板(Cursor Template) 鼠标轨迹字符串分割SQL脚本实现(SQL Code ...

  2. sql server 游标的简单用法

    sql server游标: --定义游标 declare cursor1 cursor for select ID,Name from A --打开游标 open cursor1 declare @i ...

  3. SQL Server游标 C# DataTable.Select() 筛选数据 什么是SQL游标? SQL Server数据类型转换方法 LinQ是什么? SQL Server 分页方法汇总

    SQL Server游标   转载自:http://www.cnblogs.com/knowledgesea/p/3699851.html. 什么是游标 结果集,结果集就是select查询之后返回的所 ...

  4. SQL Server 游标运用:查看所有数据库所有表大小信息(Sizes of All Tables in All Database)

    原文:SQL Server 游标运用:查看所有数据库所有表大小信息(Sizes of All Tables in All Database) 一.本文所涉及的内容(Contents) 本文所涉及的内容 ...

  5. SQL Server 游标运用:查看一个数据库所有表大小信息(Sizes of All Tables in a Database)

    原文:SQL Server 游标运用:查看一个数据库所有表大小信息(Sizes of All Tables in a Database) 一.本文所涉及的内容(Contents) 本文所涉及的内容(C ...

  6. SQL Server游标(转)

    清晰地介绍了SQL游标,很好的学习资料. 转自 http://www.cnblogs.com/knowledgesea/p/3699851.html 什么是游标 结果集,结果集就是select查询之后 ...

  7. SQL Server游标

    什么是游标 结果集,结果集就是select查询之后返回的所有行数据的集合. 游标则是处理结果集的一种机制吧,它可以定位到结果集中的某一行,多数据进行读写,也可以移动游标定位到你所需要的行中进行操作数据 ...

  8. SQL Server游标【转】

      什么是游标 结果集,结果集就是select查询之后返回的所有行数据的集合. 游标则是处理结果集的一种机制吧,它可以定位到结果集中的某一行,多数据进行读写,也可以移动游标定位到你所需要的行中进行操作 ...

  9. SQL Server 游标

    结果集,结果集就是select查询之后返回的所有行数据的集合. 在关系数据库中,我们对于查询的思考是面向集合的.而游标打破了这一规则,游标使得我们思考方式变为逐行进行. 正常面向集合的思维方式是: 而 ...

随机推荐

  1. 关系型数据库工作原理-查询优化器之索引(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>.原文链接:http://coding-geek.com/how-data ...

  2. Java遍历二叉树深度宽度

    节点数据结构 class TreeNode { TreeNode left = null; TreeNode right = null; } 最大深度,基本思路是:使用递归,分别求出左子树的深度.右子 ...

  3. java map遍历、排序,根据value获取key

    Map 四种遍历: Map<String,String> map = new HashMap<String, String>(); map.put("one" ...

  4. 牛客小白月赛1 A-简单题

    描述 Etéreo 是个爱学习的好孩子.在年假期间,他依然热情于数学.他最近发现了一个高大上的东西:,他觉得这里的  非常的厉害!然后他又告诉你:,,他会告诉你  和  ,想请你告诉他  的值.当然这 ...

  5. Python基本知识

    python是一门编程语言,这是我们学习python首先要了解的内容,那么编程语言又是什么,我们为什么需要编程语言 我们讲的话是汉语,英语或者其他语言,计算机也可以讲话,但是他只会说0,1,也只能看懂 ...

  6. 如何在IPFS里面上传一张图片

    之前有好几人问过小编,想在IPFS里面上传一张图片.如何做? 今天小编就讲一下如何在IPFS里面上传.下载文件? 1 下载IPFS软件 下载地址:https://dist.ipfs.io/#go-ip ...

  7. DBI-1.634之selectrow_array与fetchrow_array的区别

    在DBI-1.634使用手册里有一个selectrow_array函数,该函数具体说明如下: This utility method combines "prepare", &qu ...

  8. angularjs常用事件

    1. 视图模板加载完毕 $scope.$on('$viewContentLoaded', function() { alert('view template loaded'); });

  9. java实现单链表的增删功能

    JAVA 实现单链表的增删功能 package linked; class LinkedTable{ } public class LinkedTableTest { public static vo ...

  10. ansible之一:安装与配置

    ansible特点: 1.不需要安装客户端,通过sshd去通信 2.基于模块工作,模块可以由任何语言开发 3.不仅支持命令行试用模块,也支持yaml格式得playbook 4.支持sudo 5.有提供 ...