SQL SERVER迴圈遍歷(普通迴圈和游標迴圈)

2022-05-07 10:57:11 字數 2403 閱讀 2228

**自

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

endgo

--檢視結果--

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   --提交事務

endelse

begin

rollback tran --回滾事務

endclose order_cursor  --關閉游標

deallocate order_cursor   --釋放游標

endgo

--檢視結果--

select * from student

2)執行後的查詢結果:

普通迴圈,迭代,遞迴

首先 遞迴和迭代都是迴圈的一種。def demo 0 n n 1 res 0for i in range 1 n 1 res 1return res迭代是函式內某段 實現迴圈,迭代與普通迴圈的區別 迴圈 中參與運算的變數同時是儲存結果的變數,當前儲存的結果作為下一次迴圈計算的初始值。簡單來說就是,利...

增強for迴圈和普通for迴圈的區別

增強for迴圈亦為高階for迴圈。增強for迴圈內部是使用的iterator來遍歷的,只能遍歷陣列和實現了iterable介面的集合。優點是寫法簡便,無需獲得陣列 集合長度,也無需根據索引來訪問元素。缺點是不能在迴圈裡動態的刪除元素和獲取元素下標。任何的增強for迴圈都可以改寫為普通for迴圈。遍歷...

普通for迴圈與增強for迴圈效率對比

開發中經常用到for迴圈,但是到底選擇那乙個效率更高,可能讓有些同學出現糾結,給人感覺好像是增強for迴圈效率高,但是。猜測總是沒法讓人不放心,千猜萬猜還不如,動手做個測試,證明下,測試步驟如下 1 定義乙個物件,data public class car2 用乙個普通for迴圈往list裡增加物件...