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

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

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

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