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

示例:
这里有一个表(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. DECLARE rs CURSOR FOR -- LOCAL SCROLL FOR  
  4. Select namef,websitef From demo -- 这里写SQL查询语句 可以条件查询  
  5. OPEN rs  
  6. FETCH NEXT FROM rs INTO @namef,@websitef  
  7. WHILE @@FETCH_STATUS <> -1 -- =0  
  8.     BEGIN 
  9.         Print 'Name:' +@namef+ ' , WebSite:'+@websitef  
  10.         Print '----------------------------' 
  11.         Print '' 
  12.         FETCH NEXT FROM rs INTO @namef,@websitef  
  13.     END -- END @@FETCH_STATUS  
  14. CLOSE rs  
  15. 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,的意思就是 把当前游标行的数据值赋给对应的变量。
最后还需要关闭和释放游标,避免死循环。