SQL中的循环、for循环、游标

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL中的循环、for循环、游标
我们使⽤SQL语句处理数据时,可能会碰到⼀些需要循环遍历某个表并对其进⾏相应的操作(添加、修改、删除),这时我们就需要⽤到咱们在编程中常常⽤的for或foreach,但是在SQL中写循环往往显得那么吃⼒,翻遍⽹上的资料,找不到⼏个正确的并能执⾏的循环处理数据的⽅法,在这⾥,我来给⼤家分享⼀下!
要SQL中写类似for循环,我这⾥使⽤的是SQL中的游标来实现,当然SQL中也有for loop、while do等,我这⾥仅以使⽤游标⽅式来进⾏⽰例,其它的⽅式⼤家有兴趣可以研究⼀下,成功的同学可以在下⾯回复⼀下并把代码贴出来,与⼤家分享!
闲话少说,上⽰例:
1. 利⽤游标循环更新、删除MemberAccount表中的数据
DECLARE My_Cursor CURSOR--定义游标
FOR (SELECT*FROM dbo.MemberAccount) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor ; --读取第⼀⾏数据
WHILE@@FETCH_STATUS=0
BEGIN
--UPDATE dbo.MemberAccount SET UserName = UserName + 'A' WHERE CURRENT OF My_Cursor; --更新
--DELETE FROM dbo.MemberAccount WHERE CURRENT OF My_Cursor; --删除
FETCH NEXT FROM My_Cursor; --读取下⼀⾏数据
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO
2. 利⽤游标循环更新MemberService表中的数据(更新每个⽤户所购买服务的时间)
DECLARE@UserId varchar(50)
DECLARE My_Cursor CURSOR--定义游标
FOR (SELECT UserId FROM dbo.MemberAccount) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO@UserId; --读取第⼀⾏数据(将MemberAccount表中的UserId放到@UserId变量中)
WHILE@@FETCH_STATUS=0
BEGIN
PRINT@UserId; --打印数据(打印MemberAccount表中的UserId)
UPDATE dbo.MemberService SET ServiceTime =DATEADD(Month, 6, getdate()) WHERE UserId =@UserId; --更新数据
FETCH NEXT FROM My_Cursor INTO@UserId; --读取下⼀⾏数据(将MemberAccount表中的UserId放到@UserId变量中)
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO
上⾯的两个例⼦应该可以解决我们在SQL中使⽤循环的所有需求,如果不能满⾜,⾃⼰可以根据以上两个⽰例进⾏扩展,希望能帮各位解决⼀些类似的问题。

分类: ,
come from:。

相关文档
最新文档