1. 程式人生 > >SQL中的迴圈、for迴圈、遊標

SQL中的迴圈、for迴圈、遊標


 --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; --釋放遊標