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

系统 1577 0

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

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

      
         1
      
      
        --
      
      
        将book表中的LookCount(int型)字段加上800-1000的随机整数
      
      
         2
      
      
        declare
      
      
        @bid
      
      
        int
      
      
         3
      
      
        declare
      
       cur 
      
        cursor
      
      
         4
      
      
        read_only


      
      
         5
      
      
        for
      
      
        select
      
       bid 
      
        from
      
      
         dbo.Book 


      
      
         6
      
      
        open
      
      
         cur


      
      
         7
      
      
        fetch
      
      
        next
      
      
        from
      
       cur 
      
        into
      
      
        @bid
      
      
         8
      
      
        while
      
      (
      
        @@fetch_status
      
      
        =
      
      
        0
      
      
        )


      
      
         9
      
      
        begin
      
      
        10
      
      
        update
      
       dbo.Book 
      
        set
      
       LookCount
      
        =
      
      LookCount
      
        +
      
      
        cast
      
      ((
      
        rand
      
      ()
      
        *
      
      (
      
        1000
      
      
        -
      
      
        800
      
      )
      
        +
      
      
        800
      
      ) 
      
        as
      
      
        int
      
      ) 
      
        where
      
       bid
      
        =
      
      
        @bid
      
      
        11
      
      
        fetch
      
      
        next
      
      
        from
      
       cur 
      
        into
      
      
        @bid
      
      
        12
      
      
        end
      
      
        13
      
      
        close
      
      
         cur


      
      
        14
      
      
        deallocate
      
       cur
    

 

使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。
由于 @@FETCH_STATUS 对于在一个连接上的所有游标是全局性的,要小心使用 @@FETCH_STATUS 。在执行一条 FETCH 语句后,必须在对另一游标执行另一 FETCH 语句前测试 @@FETCH_STATUS 。在任何提取操作出现在此连接上前,@@FETCH_STATUS 的值没有定义。
例如,用户从一个游标执行一条 FETCH 语句,然后调用一个存储过程,此存储过程打开并处理另一个游标的结果。当控制从被调用的存储过程返回后,@@FETCH_STATUS 反映的是在存储过程中执行的最后的 FETCH 语句的结果,而不是在存储过程被调用之前的 FETCH 语句的结果。

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


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论