SQL中的迴圈、for迴圈、遊標
阿新 • • 發佈:2018-11-21
--SQL中的迴圈、for迴圈、遊標
--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),@UserName varchar(50)
DECLARE My_Cursor CURSOR --定義遊標
FOR (SELECT UserId FROM dbo.MemberAccount) --查出需要的集合放到遊標中
OPEN My_Cursor; --開啟遊標
FETCH NEXT FROM My_Cursor INTO @UserId,@UserName; --讀取第一行資料(將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,@UserName; --讀取下一行資料(將MemberAccount表中的UserId放到@UserId變數中)
END
CLOSE My_Cursor; --關閉遊標
DEALLOCATE My_Cursor; --釋放遊標