SQL循环语句
SQL循环,值收藏。可基于场景,扩展更多。
1.while:
declare @itemnumber int --定义需要循环的次数 declare @tagint int --定义标志字段,用于结束循环 set @tagint=1 select @itemnumber = 200 --循环200次 if(@itemnumber>0) begin while @tagint<=@itemnumber begin --waitfor delay '00:00:01' --每隔一秒再执行 可用参数变量替换 --插入随机字符 --INSERT INTO [TCWirelessGoodsManage].[dbo].[LotteryCodeDetail] --([LCDGiftId],[LCDCode],[LCDStatus],[LCDSendTime],[LCDIsValid] --,[LCDIsDel],[LCDCreater],[LCDCreateTime],[LCDUpdater],[LCDUpdateTime]) -- VALUES -- (25,'L'+CONVERT(nvarchar(500),CEILING(rand()*1000000)) -- ,0,GETDATE(),1,0,'',GETDATE(),'',GETDATE()) set @tagint=@tagint+1 end end
2.游标a:
DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游标中 OPEN My_Cursor; --打开游标 FETCH NEXT FROM My_Cursor ; --读取第一行数据 WHILE @@FETCH_STATUS = 0 BEGIN --UPDATE [GoodsManage].[dbo].[LotteryCodeDetail] SET [LCDCode] = code + 'A' WHERE CURRENT OF My_Cursor; --更新 --DELETE FROM [GoodsManage].[dbo].[LotteryCodeDetail] WHERE CURRENT OF My_Cursor; --删除 FETCH NEXT FROM My_Cursor; --读取下一行数据 END CLOSE My_Cursor; --关闭游标 DEALLOCATE My_Cursor; --释放游标 GO
3.游标b:
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