zoukankan      html  css  js  c++  java
  • sql 游标循环遍历

      写存储过程的时候碰到一个需要对数据进行遍历循环操作的问题,最后通过游标解决了,感觉很适用、

     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

    使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。
    由于 @@FETCH_STATUS 对于在一个连接上的所有游标是全局性的,要小心使用 @@FETCH_STATUS 。在执行一条 FETCH 语句后,必须在对另一游标执行另一 FETCH 语句前测试 @@FETCH_STATUS 。在任何提取操作出现在此连接上前,@@FETCH_STATUS 的值没有定义。

  • 相关阅读:
    查看linux系统内置宏定义
    C++ typename 关键字总结
    vs2017 如何定位C++内存泄漏
    centos7.6下pyspider + python2.7安装
    centos7下安装python3.7.5
    centos7下docker安装
    centos7.6下redis安装
    centos7下git的安装
    centos7下mysql5.7的安装
    centos7下nginx,tomcaat开机启动(新)
  • 原文地址:https://www.cnblogs.com/xran/p/3651626.html
Copyright © 2011-2022 走看看