用SQL游标对数据进行遍历循环

SQL游标相信大家都比较熟悉了,下面就教您如何使用SQL游标对数据进行遍历循环的方法,希望对您学习SQL游标方面能有所帮助。

和政网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联成立于2013年到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联

SQL游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条T_SQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。

SQL游标的优点是可以方便从一个结果集中进行循环遍历数据在进行操作。

1、SQL游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;

2、它还提供对基于游标位置而对表中数据进行删除或更新的能力;

3、游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。

然尔游标也有缺点——复杂和低效,是游标的***缺点,也是致使很多时候在使用存储过程中没有想到游标的主要原因。

下面是在实际工作中的一个游标实例的应用,通过游标把A表的数据的一列值复制到B表的列当中,其中二个表都有相同的UID字段,条件是对相同UID的数据进行复制.

 
 
 
  1. declare @level varchar(100)  
  2. declare @uid varchar(100)  
  3. declare cur cursor--定义一个游标  
  4. read_only  
  5. for select egg_code.user_id,egg_prize_level  
  6. from egg_code inner join egg_prize on egg_prize.user_id=egg_code.user_id--为所获得的数据集指定游标  
  7.  
  8. open cur--打开游标  
  9. fetch next from cur into @uid,@level--把提取操作的列数据放到局部变量中  
  10. while(@@fetch_status=0)--返回被 FETCH 语句执行的***游标的状态,而不是任何当前被连接打开的游标的状态。  
  11.  
  12. begin  
  13. --print '等级:'+@level+'--------------用户ID:'+@uid  
  14.  
  15. update egg_code set prize_level=@level   where user_id=@uid--执行操作  
  16.  
  17. --提前下一位信息  
  18. fetch next from cur into @uid,@level  
  19. end  
  20. close cur--关闭游标  
  21. deallocate cur--删除游标  
  22. go  
  23.  

使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。

由于 @@FETCH_STATUS 对于在一个连接上的所有游标是全局性的,要小心使用 @@FETCH_STATUS 。在执行一条 FETCH 语句后,必须在对另一游标执行另一 FETCH 语句前测试 @@FETCH_STATUS 。在任何提取操作出现在此连接上前,@@FETCH_STATUS 的值没有定义。

例如,用户从一个游标执行一条 FETCH 语句,然后调用一个存储过程,此存储过程打开并处理另一个游标的结果。当控制从被调用的存储过程返回后,@@FETCH_STATUS 反映的是在存储过程中执行的***的 FETCH 语句的结果,而不是在存储过程被调用之前的 FETCH 语句的结果。

使用上面的游标是泉州SEO在一次网站砸金蛋活动中,二个表的数据在使用的过程中有部份后期改到程序致使有部份数据无法同步,导致前台查询的时候所用到的表无法查到相关的数据,没用游标进行操作之前试过只用简单的SQL语句去实现这样的同步功能,但是始终无法实现,所以只能使用游标来实现

【编辑推荐】

动态sql语句基本语法介绍

SQL Server视图的使用

SQL SERVER内部函数大全

sql server表格变量的用法

SQL Server变量赋值的方法

当前题目:用SQL游标对数据进行遍历循环
路径分享:http://www.mswzjz.cn/qtweb/news40/481990.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能