SQL——使用游标进行遍历



         前两天一个同事大叔问了这样一个问题,他要对表做个类似foreach的效果,问我怎么搞。我想了想,就拿游标回答他,当时事实上也没用过数据库中的游标,可是曾经用过ADO里面的,感觉应该几乎相同。


        今天闲下来,百度下,做了个关于游标的小DEMO:



            首先,让我们先来建张測试表:


                

USE LoadTest2010

CREATE TABLE testCursor /*创建測试表*/
(

	id INT,
	name VARCHAR(50)

)

--插入測试数据
INSERT INTO testCursor VALUES(1,'lhc')
INSERT INTO testCursor VALUES(2,'jay')


        接着。我们使用游标对这张表进行一个循环的操作:


           

--首先定义暂时存储数据的变量,以供游标移动时当作Temp用
DECLARE @id INT
DECLARE @name VARCHAR(50)

DECLARE cursorTest CURSOR FOR --定义游标
	SELECT * FROM testCursor  --定义使用游标的表

OPEN cursorTest  --打开游标


FETCH NEXT FROM cursorTest INTO @id,@name --将游标向下移动一行,获取的数据放入之前定义的变量中

WHILE @@FETCH_STATUS=0 --推断是否成功获取数据

BEGIN 
	UPDATE testCursor SET name=name+'1'
	WHERE id=@id   --这里进行对应的处理。能够依据须要填入SQL语句
	FETCH NEXT FROM cursorTest INTO @id,@name --将游标向下移动一行
END

--关闭游标
CLOSE cursorTest
DEALLOCATE cursorTest

      

          完毕之后。运行一下:


                

            



        发现我们想要的循环效果出现了。。。。嘿嘿~~~













                       

posted on 2017-05-03 10:05  slgkaifa  阅读(333)  评论(0编辑  收藏  举报

导航