发表新主题 回复该帖子
主题:[原创]SQL 存储过程中使用游标查询(遍历)某表格中的数据
jastby
帖子档案  楼主 [原创]SQL 存储过程中使用游标查询(遍历)某表格中的数据   Post by : 2009-06-02 14:09:12.0
  • 幼儿园
  • 幼儿园
  • UID:2
  • 主题:126
  • 帖子:219
  • 加为好友 加为好友    发送短信 发送短信

我们在使用存储过程当中,有时在统计数据的时候,需要查询某表中的数据,并且得到指定字段的具体值,这时就需要用到游标查询来遍历表数据

示例:
这里有一个表(demo),字段结构和数据如下:

idf         namef                websitef
----------- -------------------- -------------------------------------------
1           javawind             http://www.javawind.net
2           blog                 http://blog.javawind.net
3           csdn                 http://www.csdn.net
4           sun                  http://www.sun.com

下面我们通过游标查询来遍历这个表的数据,并且把字段值赋值给存储过程的变量

   sql代码
  1. DECLARE @namef varchar(50)  
  2. DECLARE @websitef varchar(50)  
  3.  
  4. DECLARE rs CURSOR FOR -- LOCAL SCROLL FOR  
  5. Select namef,websitef From demo -- 这里写SQL查询语句 可以条件查询  
  6. OPEN rs  
  7. FETCH NEXT FROM rs INTO @namef,@websitef  
  8. WHILE @@FETCH_STATUS <> -1 -- =0  
  9.     BEGIN 
  10.         Print 'Name:' +@namef+ ' , WebSite:'+@websitef  
  11.         Print '----------------------------' 
  12.         Print '' 
  13.         FETCH NEXT FROM rs INTO @namef,@websitef  
  14.     END -- END @@FETCH_STATUS  
  15. CLOSE rs  
  16. DEALLOCATE rs 

执行结果:

Name:javawind , WebSite:http://www.javawind.net
----------------------------
 
Name:blog , WebSite:http://blog.javawind.net
----------------------------
 
Name:csdn , WebSite:http://www.csdn.net
----------------------------
 
Name:sun , WebSite:http://www.sun.com
----------------------------

解析
通过定义rs游标之后,FETCH NEXT FROM rs INTO @namef,@websitef,的意思就是 把当前游标行的数据值赋给对应的变量。
最后还需要关闭和释放游标,避免死循环。

返回页面顶部  


CopyRight © 2008-2009 JavaWind.Net Studio All Rights Reserved
Powered By JWind.BBS Vesion 1.0.0 Beta1 Processed in 21 ms,0 (Queries)  Gzip enabled

WAP - 清除Cookies - 联系我们 - JavaWind.Net Studio - Archiver - TOP Valid XHTML 1.0 Transitional Valid CSS! 粤ICP备07511478号