我要实现的是目的是,创建一个游标,游标查询前20条数据,用游标来更新这20条数据中的前5条数据中的其中visitl_jrxiaofei,visitl_lszxiaofei两个段!
 
我的代码如下: 
Declare @visitl_jrxiaofei int 
Declare @visitl_lszxiaofei int 
declare @i int 
Declare myCursor Cursor For Select top 20 visitl_jrxiaofei,visitl_lszxiaofei From visitl_user 
Open myCursor          --打开游标 
Fetch next From myCursor Into @visitl_jrxiaofei,@visitl_lszxiaofei    --开始抓第一条数据 
While @@fetch_status=0                      --如果数据集里一直有数据 
Begin   Update visitl_user Set [visitl_jrxiaofei]=@visitl_jrxiaofei+1,visitl_lszxiaofei=@visitl_lszxiaofei+1 
  Fetch Next From myCursor Into @visitl_jrxiaofei,@visitl_lszxiaofei    --跳到下一条数据 
  set @i=@i+1 
  If @i =4  
  break 
End Close myCursor      --关闭游标 
Deallocate myCursor  --删除游标 但这里还是不行恩,这里要怎么样才能实现我的这个功能呢?根据二楼的用SET @i=@i+1 
if @i=4 
break 这样还是不行恩! 要如何实现?

解决方案 »

  1.   


    看看这样行不行??
    If @i =4  
    begin
       close myCursor          
       deallocate myCursor          end
      

  2.   

    Declare @visitl_jrxiaofei int 
    Declare @visitl_lszxiaofei int 
    declare @i int 
    declare @flag int --加这个看看 
    set @flag  = 0 -- 加这个看看

    Declare myCursor Cursor For Select top 20 visitl_jrxiaofei,visitl_lszxiaofei From visitl_user 
    Open myCursor          --打开游标 
    Fetch next From myCursor Into @visitl_jrxiaofei,@visitl_lszxiaofei    --开始抓第一条数据 
    While ( @@fetch_status=0 ) and ( @flag = 0 )                      --如果数据集里一直有数据 
    Begin   Update visitl_user Set [visitl_jrxiaofei]=@visitl_jrxiaofei+1,visitl_lszxiaofei=@visitl_lszxiaofei+1 
      Fetch Next From myCursor Into @visitl_jrxiaofei,@visitl_lszxiaofei    --跳到下一条数据 
      set @i=@i+1 
      If @i =4 
      begin
        set @flag = 1 
      end 
      -- break 
    End Close myCursor      --关闭游标 
    Deallocate myCursor  --删除游标 ---- 我没测试 抛砖引玉吧---------
      

  3.   

    Declare @visitl_jrxiaofei int 
    Declare @visitl_lszxiaofei int 
    declare @i int 
    set @i=0
    Declare myCursor Cursor For Select top 20 visitl_jrxiaofei,visitl_lszxiaofei From visitl_user 
    Open myCursor          --打开游标 
    Fetch next From myCursor Into @visitl_jrxiaofei,@visitl_lszxiaofei    --开始抓第一条数据 
    While @i<4                     --如果数据集里一直有数据 
    Begin   Update visitl_user Set [visitl_jrxiaofei]=@visitl_jrxiaofei+1,visitl_lszxiaofei=@visitl_lszxiaofei+1 
      Fetch Next From myCursor Into @visitl_jrxiaofei,@visitl_lszxiaofei    --跳到下一条数据 set @i=@i+1
    End Close myCursor      --关闭游标 
    Deallocate myCursor  --删除游标