原文:
sql 游標循環遍歷
? 寫存儲過程的時候碰到一個需要對數據進行遍歷循環操作的問題,最后通過游標解決了,感覺很適用、
1
declare @level varchar(
100
)
2
declare @uid varchar(
100
)
3
declare cur cursor--
定義一個游標
4
read_only
5
for
select
egg_code.user_id,egg_prize_level
6
from
egg_code inner join egg_prize on egg_prize.user_id=egg_code.user_id--
為所獲得的數據集指定游標
7
8
open cur--
打開游標
9
fetch next
from
cur into @uid,@level--
把提取操作的列數據放到局部變量中
10
while
(@@fetch_status=
0
)--
返回被 FETCH 語句執行的最后游標的狀態,而不是任何當前被連接打開的游標的狀態。
11
12
begin
13
--print
'
等級:
'
+@level+
'
--------------用戶ID:
'
+
@uid
14
15
update egg_code
set
prize_level=@level
where
user_id=@uid--
執行操作
16
17
--
提前下一位信息
18
fetch next
from
cur into @uid,@level
19
end
20
close cur--
關閉游標
21
deallocate cur--
刪除游標
22
go
使用游標的順序: 聲名游標、打開游標、讀取數據、關閉游標、刪除游標。
由于 @@FETCH_STATUS 對于在一個連接上的所有游標是全局性的,要小心使用 @@FETCH_STATUS 。在執行一條 FETCH 語句后,必須在對另一游標執行另一 FETCH 語句前測試 @@FETCH_STATUS 。在任何提取操作出現在此連接上前,@@FETCH_STATUS 的值沒有定義。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

