普通while循環sql
1 循環5來修改學生信息fetch
循環遍歷修改記錄 ui
DECLARE @i int .net
set @i=0
while @i<5
BEGIN
update Student set demo = demo+5 WHERE Uid=@i
set @i=@i +1
--PRINT @i
ENDblog
2 遊標循環(沒有事務)事務
----遊標循環(沒有事務)get
BEGIN
DECLARE @a INT,@error INT
DECLARE @temp NVARCHAR(50)
SET @a=1
SET @error=0
-----申明遊標爲uid
DECLARE order_cursor CURSOR
FOR (SELECT [Uid] FROM Student)
-----打開遊標
OPEN order_cursor
---- 開始循環遊標變量
FETCH NEXT FROM order_cursor INTO @temp變量
WHILE @@FETCH_STATUS=0 -----返回被FETCH語句執行的最後遊標的狀態
BEGIN
UPDATE student SET Age=15+@a,demo=@a WHERE uid=@temp
SET @a=@a+1
SET @error=@error+@@ERROR ------記錄每次運行sql後是否正確 0正確
FETCH NEXT FROM order_cursor INTO @temp -----轉到下一個遊標,沒有會死循環
END
CLOSE order_cursor ----關閉遊標
DEALLOCATE order_cursor ---釋放遊標
ENDdate
3 包含事務循環
---遊標循環遍歷--
BEGIN
DECLARE @a INT ,@error INT
DECLARE @temp VARCHAR(50)
SET @a=1
SET @error=0
BEGIN TRAN
DECLARE order_cursor CURSOR
FOR(SELECT uid FROM student)
OPEN order_cursor
FETCH NEXT FROM order_cursor INTO @temp
WHILE @@FETCH_STATUS=0 ---返回被fetch語句執行的最後遊標的狀態
BEGIN
UPDATE student SET age=40+@a,demo=@a WHERE uid=@temp
SET @a=@a+1
SET @error=@error+@@ERROR
FETCH NEXT FROM order_cursor INTO @temp ----轉到下一個遊標
END
IF(@error=0)
BEGIN
COMMIT TRAN
END
ELSE
BEGIN
ROLLBACK TRAN
END
CLOSE order_cursor
DEALLOCATE order_cursor
END