sql server 存儲過程---游標的循環


sqlserver中的循環遍歷(普通循環和游標循環)

sql 經常用到循環,下面介紹一下普通循環和游標循環

1、首先需要一個測試表數據Student

2、普通循環

1)循環5次來修改學生表信息

--循環遍歷修改記錄--
declare @i int   
set @i=0
while @i<5
begin
    update Student set demo = @i+5 where Uid=@i
    set @i=@i +1 
end
--查看結果--
select * from Student

2)執行后的查詢結果

3、游標循環(沒有事務)

1)根據學生表實際數據循環修改信息
---游標循環遍歷--
begin
    declare @a int,@error int    
    declare @temp varchar(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
go
--查看結果--
select * from Student

2)執行后的查詢結果

4、游標循環(事務)

1)根據實際循環學生表信息

---游標循環遍歷--
begin
    declare @a int,@error int    
    declare @temp varchar(50)
    set @a=1
    set @error=0
    begin tran  --申明事務
    --申明游標為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=20+@a,demo=@a where Uid=@temp
            set @a=@a+1
            set @error= @error + @@ERROR   --記錄每次運行sql后是否正確,0正確
            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
go
--查看結果--
select * from Student

2)執行后的查詢結果:


免責聲明!

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



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