游標(biāo)簡(jiǎn)介:
????
Sql
游標(biāo)提供了一種循環(huán)結(jié)果集的機(jī)制,它對(duì)數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行逐行讀取,可以實(shí)現(xiàn)不易用
select
語(yǔ)句語(yǔ)法輕易地表達(dá)復(fù)雜計(jì)算。
???? 通過(guò)
sql
語(yǔ)言從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù)口,然后把結(jié)果放到內(nèi)存的一塊區(qū)域中
.
往往這個(gè)結(jié)果講包含多條數(shù)據(jù),這也是游標(biāo)產(chǎn)生了一個(gè)不可避免的弊端對(duì)系統(tǒng)資源占用相對(duì)較大。
游標(biāo)的使用過(guò)程:
1. 聲明游標(biāo)
2. 打開(kāi)游標(biāo)
3. 從游標(biāo)中重復(fù)(讀取)行,有選擇的修改或者刪除
4. 關(guān)閉游標(biāo)
5. 當(dāng)不再需要游標(biāo)時(shí),釋放游標(biāo)
?
聲明一個(gè)游標(biāo)
?DECLARE
游標(biāo)名
[ INSENSITIVE ] [ SCROLL ] CURSOR
FOR sql-statement
例: Declare Mycursor
?? For select * from tb_name
打開(kāi)游標(biāo)
OPEN?MyCursor
游標(biāo)的操作
?FETCH
?? ?? ????? [ NEXT | PRIOR | FIRST | LAST]
FROM
{
游標(biāo)名
| @
游標(biāo)變量名
} [ INTO @
變量名
[
,
…] ]
一. ?? 可滾動(dòng)游標(biāo)
?Next ?????? 當(dāng)前行的下一行
?Prior ?????? 當(dāng)前行的前一行
?First ?????? 第一行
?Last ??????? 最后一行
?Absolute n ?? n>0, 定位到從開(kāi)始的第 n 行
?????????????????? n=0 沒(méi)有返回行
??????????????????? n<0 定位到末尾前的第n行
?Relative n ?? n<-1 定位到當(dāng)前行之前的第n行
????????????????? n=-1 通Prior關(guān)鍵字相同
????? ??????????? n=0 定位到當(dāng)前行 [重讀]
?????????????????
n=1 同Next關(guān)鍵字相同
???????????????? N>1定位到當(dāng)前行之后的第n行
?

每執(zhí)行一個(gè)FETCH
操作之后,通常都要查看一下全局變量
@@FETCH_STATUS
中的狀態(tài)值,以此判斷
FETCH
操作是否成功。該變量有三種狀態(tài)值:
· 0
表示成功執(zhí)行
FETCH
語(yǔ)句。
· -1
表示
FETCH
語(yǔ)句失敗,例如移動(dòng)行指針使其超出了結(jié)果集。
· -2
表示被提取的行不存在。
由于
@@FETCH_STATU
是全局變量,在一個(gè)連接上的所有游標(biāo)都可能影響該變量的值。因此,在執(zhí)行一條
FETCH
語(yǔ)句后,必須在對(duì)另一游標(biāo)執(zhí)行另一
FETCH
語(yǔ)句之前測(cè)試該變量的值才能作出正確的判斷。
?
?
?

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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