? 寫存儲(chǔ)過程的時(shí)候碰到一個(gè)需要對(duì)數(shù)據(jù)進(jìn)行遍歷循環(huán)操作的問題,最后通過游標(biāo)解決了,感覺很適用、
1 declare @level varchar( 100 ) 2 declare @uid varchar( 100 ) 3 declare cur cursor-- 定義一個(gè)游標(biāo) 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-- 為所獲得的數(shù)據(jù)集指定游標(biāo) 7 8 open cur-- 打開游標(biāo) 9 fetch next from cur into @uid,@level-- 把提取操作的列數(shù)據(jù)放到局部變量中 10 while (@@fetch_status= 0 )-- 返回被 FETCH 語(yǔ)句執(zhí)行的最后游標(biāo)的狀態(tài),而不是任何當(dāng)前被連接打開的游標(biāo)的狀態(tài)。 11 12 begin 13 --print ' 等級(jí): ' +@level+ ' --------------用戶ID: ' + @uid 14 15 update egg_code set prize_level=@level where user_id=@uid-- 執(zhí)行操作 16 17 -- 提前下一位信息 18 fetch next from cur into @uid,@level 19 end 20 close cur-- 關(guān)閉游標(biāo) 21 deallocate cur-- 刪除游標(biāo) 22 go
使用游標(biāo)的順序: 聲名游標(biāo)、打開游標(biāo)、讀取數(shù)據(jù)、關(guān)閉游標(biāo)、刪除游標(biāo)。
由于 @@FETCH_STATUS 對(duì)于在一個(gè)連接上的所有游標(biāo)是全局性的,要小心使用 @@FETCH_STATUS 。在執(zhí)行一條 FETCH 語(yǔ)句后,必須在對(duì)另一游標(biāo)執(zhí)行另一 FETCH 語(yǔ)句前測(cè)試 @@FETCH_STATUS 。在任何提取操作出現(xiàn)在此連接上前,@@FETCH_STATUS 的值沒有定義。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
