3.游標(biāo)的生命周期
游標(biāo)的生命周期包含有五個階段:聲明游標(biāo)、打開游標(biāo)、讀取游標(biāo)數(shù)據(jù)、關(guān)閉游標(biāo)、釋放游標(biāo)。
聲明游標(biāo)是為游標(biāo)指定獲取數(shù)據(jù)時所使用的Select語句,聲明游標(biāo)并不會檢索任何數(shù)據(jù),它只是為游標(biāo)指明了相應(yīng)的Select 語句。
Declare 游標(biāo)名稱 Cursor 參數(shù)
聲明游標(biāo)的參數(shù)
- Local與Global:Local表示游標(biāo)的作用于僅僅限于其所在的存儲過程、觸發(fā)器以及批處理中、執(zhí)行完畢以后游標(biāo)自動釋放。Global表示的是該游標(biāo)作用域是整個會話層。由連接執(zhí)行的任何存儲過程、批處理等都可以引用該游標(biāo)名稱,僅在斷開連接時隱性釋放。
- Forward_only與Scroll:前者表示為只進游標(biāo),后者表示為可以隨意定位。默認為前者。
- Static、Keyset與Dynamic: 第一個表示定義一個游標(biāo),其數(shù)據(jù)存放到一個臨時表內(nèi),對游標(biāo)的所有請求都從臨時表中應(yīng)答,因此,對該游標(biāo)進行提取操作時返回的數(shù)據(jù)不反映對基表所作的修改,并且該游標(biāo)不允許修改。Keyset表示的是,當(dāng)游標(biāo)打開時,鍵集驅(qū)動游標(biāo)中行的身份與順序是固定的,并把其放到臨時表中。Dynamic表示的是滾動游標(biāo)時,動態(tài)游標(biāo)反映對結(jié)果集內(nèi)所有數(shù)據(jù)的更改。
- Read_only 、Scroll_Locks與Optimistic:第一個表示的是只讀游標(biāo),第二個表示的是在使用的游標(biāo)結(jié)果集數(shù)據(jù)上放置鎖,當(dāng)行讀取到游標(biāo)中然后對它們進行修改時,數(shù)據(jù)庫將鎖定這些行,以保證數(shù)據(jù)的一致性。Optimistic的含義是游標(biāo)將數(shù)據(jù)讀取以后,如果這些數(shù)據(jù)被更新了,則通過游標(biāo)定位進行的更新與刪除操作將不會成功。
標(biāo)準(zhǔn)游標(biāo):
Declare MyCursor Cursor For Select * From Master_Goods
只讀游標(biāo)
Declare MyCusror Cursor For Select * From Master_Goods For Read Only
可更新游標(biāo)
Declare MyCusror Cursor For Select * From Master_Goods For UpDate
打開游標(biāo)使用Open語句用于打開Transaction-SQL服務(wù)器游標(biāo),執(zhí)行Open語句的過程中就是按照Select語句進行填充數(shù)據(jù),打開游標(biāo)以后游標(biāo)位置在第一行。
出處:yangyang8848
責(zé)任編輯:bluehearts
上一頁 SQLServer 游標(biāo)簡介與使用說明 [1] 下一頁 SQLServer 游標(biāo)簡介與使用說明 [3]
◎進入論壇網(wǎng)絡(luò)編程版塊參加討論
|