原文:
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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
