我们在使用存储过程当中,有时在统计数据的时候,需要查询某表中的数据,并且得到指定字段的具体值,这时就需要用到游标查询来遍历表数据
示例:
这里有一个表(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
下面我们通过游标查询来遍历这个表的数据,并且把字段值赋值给存储过程的变量
- DECLARE @namef varchar(50)
- DECLARE @websitef varchar(50)
- DECLARE rs CURSOR FOR -- LOCAL SCROLL FOR
- Select namef,websitef From demo -- 这里写SQL查询语句 可以条件查询
- OPEN rs
- FETCH NEXT FROM rs INTO @namef,@websitef
- WHILE @@FETCH_STATUS <> -1 -- =0
- BEGIN
- Print 'Name:' +@namef+ ' , WebSite:'+@websitef
- Print '----------------------------'
- Print ''
- FETCH NEXT FROM rs INTO @namef,@websitef
- END -- END @@FETCH_STATUS
- CLOSE rs
- 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,的意思就是 把当前游标行的数据值赋给对应的变量。
最后还需要关闭和释放游标,避免死循环。