SQL Server循環


1.普通循環

1     DECLARE @i int 
2 
3    set @i=0
4    while @i<5
5    BEGIN
6    update Student set demo = demo+5 WHERE Uid=@i
7    set @i=@i +1 
8     --PRINT @i
9    END

 

2.游標循環(沒有事務)

 1 ---游標循環(沒有事務)
 2 
 3   BEGIN
 4   DECLARE @a INT,@error INT
 5   DECLARE @temp NVARCHAR(50)
 6   SET @a=1
 7   SET @error=0
 8   -----申明游標為uid
 9   DECLARE order_cursor CURSOR
10   FOR (SELECT [Uid] FROM Student)
11   -----打開游標
12   OPEN order_cursor
13   ---- 開始循環游標變量
14   FETCH NEXT FROM order_cursor INTO @temp
15 
16   WHILE @@FETCH_STATUS=0 -----返回被FETCH語句執行的最后游標的狀態
17   BEGIN
18   UPDATE student SET Age=15+@a,demo=@a WHERE uid=@temp
19   SET @a=@a+1
20   SET @error=@error+@@ERROR ------記錄每次運行sql后是否正確 0正確
21   FETCH NEXT FROM order_cursor INTO @temp -----轉到下一個游標,沒有會死循環
22   END
23   CLOSE order_cursor ----關閉游標
24   DEALLOCATE order_cursor ---釋放游標
25   END

 

3.游標循環(含事務)

 1   ---游標循環遍歷--
 2   BEGIN
 3   DECLARE @a INT ,@error INT
 4   DECLARE @temp VARCHAR(50)
 5   SET @a=1
 6   SET @error=0
 7   BEGIN TRAN
 8   DECLARE order_cursor CURSOR
 9   FOR(SELECT uid FROM student)
10   OPEN order_cursor
11   FETCH NEXT FROM order_cursor INTO @temp
12   WHILE @@FETCH_STATUS=0 ---返回被fetch語句執行的最后游標的狀態
13   BEGIN
14   UPDATE student SET age=40+@a,demo=@a WHERE uid=@temp
15   SET @a=@a+1
16   SET @error=@error+@@ERROR 
17   FETCH NEXT FROM order_cursor INTO @temp ----轉到下一個游標
18   END
19   IF(@error=0)
20   BEGIN
21   COMMIT TRAN
22   END
23   ELSE
24   BEGIN
25   ROLLBACK TRAN
26   END
27   CLOSE order_cursor 
28   DEALLOCATE order_cursor
29   END

 

轉載

https://www.cnblogs.com/onroad2016/p/8650572.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM