1.3.2 打開游標(biāo) 非常簡(jiǎn)單,我們就打開剛才我們聲明的游標(biāo)mycursor OPEN mycursor 1.3.3讀取數(shù)據(jù) FETCH [ NEXT | PRIOR | FIRST | LAST] FROM { 游標(biāo)名 | @游標(biāo)變量名 } [ INTO @變量名 [,…] ] 參數(shù)說(shuō)明: NEXT 取下一行的數(shù)據(jù),并把下一行作為當(dāng)前行(遞增)。由于打開游標(biāo)后,行指針是指向該游標(biāo)第1行之前,所以第一次執(zhí)行FETCH NEXT操作將取得游標(biāo)集中的第1行數(shù)據(jù)。NEXT為默認(rèn)的游標(biāo)提取選項(xiàng)。 INTO @變量名[,…] 把提取操作的列數(shù)據(jù)放到局部變量中。 列表中的各個(gè)變量從左到右與游標(biāo)結(jié)果集中的相應(yīng)列相關(guān)聯(lián)。 各變量的數(shù)據(jù)類型必須與相應(yīng)的結(jié)果列的數(shù)據(jù)類型匹配或是結(jié)果列數(shù)據(jù)類型所支持的隱性轉(zhuǎn)換。變量的數(shù)目必須與游標(biāo)選擇列表中的列的數(shù)目一致。 1.3.4關(guān)閉游標(biāo) CLOSE mycursor 1.3.5刪除游標(biāo) DEALLOCATE mycursor
實(shí)例1
declare @id nvarchar(20) --定義變量來(lái)保存ID號(hào) declare @A float --定義變量來(lái)保存值 declare mycursor cursor for select * from tb_c --為所獲得的數(shù)據(jù)集指定游標(biāo) open mycursor --打開游標(biāo) fetch next from mycursor into @id,@A --開始抓第一條數(shù)據(jù) while(@@fetch_status=0) --如果數(shù)據(jù)集里一直有數(shù)據(jù) begin select tb_b.name,(tb_b.gz + @A) from tb_b where tb_b.id = @id --開始做想做的事(什么更新呀,刪除呀) fetch next from mycursor into @id,@A --跳到下一條數(shù)據(jù) end close mycursor --關(guān)閉游標(biāo) deallocate mycursor --刪除游標(biāo)