如果对数据进行遍历循环操作,通过 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 语句的结果。
    
    
    
      
    
  


 
					 
					