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

      

          完成之后,执行一下:


                

             技术分享



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













                       

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。