前两天一个同事大叔问了这样一个问题,他要对表做个类似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
完毕之后。运行一下:
发现我们想要的循环效果出现了。。。。嘿嘿~~~