sqlserver循環


普通while循環

  1 循環5來修改學生信息

           循環遍歷修改記錄 

      DECLARE @i int 

    set @i=0
    while @i<5
    BEGIN
    update Student set demo = demo+5 WHERE Uid=@i
    set @i=@i +1
    --PRINT @i
    END

  2   游標循環(沒有事務)

               ----游標循環(沒有事務)

    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 ---釋放游標
    END

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

 

4  https://blog.csdn.net/lockepeak/article/details/2632904

 

  


免責聲明!

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



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