前两天一个同事大叔问了这样一个问题,他要对表做个类似foreach的效果,问我怎么搞,我想了想,就拿游标回答他,当时其实也没用过数据库中的游标,但是以前用过ADO里面的,感觉应该差不多。
今天闲下来,百度下,做了个关于游标的小DEMO:
首先,让我们先来建张测试表:
USE LoadTest2010CREATE TABLE testCursor /*创建测试表*/( id INT, name VARCHAR(50))--插入测试数据INSERT INTO testCursor VALUES(1,'lhc')INSERT INTO testCursor VALUES(2,'jay')
接着,我们使用游标对这张表进行一个循环的操作:
--首先定义临时存储数据的变量,以供游标移动时当作Temp用DECLARE @id INTDECLARE @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 [email protected] --这里进行相应的处理,可以根据需要填入SQL语句 FETCH NEXT FROM cursorTest INTO @id,@name --将游标向下移动一行END--关闭游标CLOSE cursorTestDEALLOCATE cursorTest
完成之后,执行一下:
发现我们想要的循环效果出现了。。。。嘿嘿~~~