1.游標(biāo)(用于存儲(chǔ)多個(gè)查詢(xún)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)(結(jié)果集),它有一個(gè)從上到下移動(dòng)的指針,以便遍歷每個(gè)記錄)
游標(biāo)也可以理解為逐行返回SQL語(yǔ)句的結(jié)果集
如何寫(xiě)一個(gè)光標(biāo)?
1.聲明光標(biāo)
聲明光標(biāo)cur_name
是+想做的;
用于定義數(shù)據(jù)的類(lèi)型/row type;
2.打開(kāi)光標(biāo)
open cur _ name
3.提取數(shù)據(jù)
取得
4.關(guān)閉光標(biāo)
從t_emp中提取數(shù)據(jù)
解密光標(biāo)曲線
是從t_emp中選擇*
r _ emp t _ emp % rowtype
開(kāi)始
開(kāi)放曲線;
將cur提取到r_emp中;
DBMS _ output . put _ line(' id:' | | r _ EMP . id);
關(guān)閉;
結(jié)束;
5.釋放光標(biāo)
解除分配cur_name
如何判斷是否在結(jié)果集末尾,
在oracle中,游標(biāo)的屬性由屬性值來(lái)判斷
1)%notfound到達(dá)光標(biāo)的末尾,如果沒(méi)有記錄,則返回true。
2)%found用于檢查游標(biāo)是否成功,一般用在fetch語(yǔ)句之前。當(dāng)光標(biāo)根據(jù)條件查詢(xún)記錄時(shí),它返回真
3)%isopen確定光標(biāo)是否打開(kāi)
4)rowcount獲取受影響的行數(shù)
二、光標(biāo)的分類(lèi):
1、靜態(tài)游標(biāo)在執(zhí)行之前,清楚地知道sql語(yǔ)句的游標(biāo)
a)顯示光標(biāo)
編譯時(shí)可以清楚地知道用戶自己編寫(xiě)的Sql語(yǔ)句
b)隱式光標(biāo)
Dml(添加、刪除、修改和查詢(xún)單個(gè)記錄)使用隱式游標(biāo),變量名不需要用戶自己聲明。
它由系統(tǒng)定義,稱(chēng)為sql。
電影光標(biāo)的使用:由%rowcour判斷是否使用。不要用。定義應(yīng)該是一個(gè)光標(biāo),由系統(tǒng)定義
2.動(dòng)態(tài)游標(biāo)在執(zhí)行前不知道sql語(yǔ)句游標(biāo),執(zhí)行時(shí)只知道sql語(yǔ)句游標(biāo)。
a)強(qiáng)類(lèi)型游標(biāo)
弱類(lèi)型游標(biāo)
三、光標(biāo)的作用:(在結(jié)果集中取出一行)
游標(biāo)是映射到結(jié)果集中一行數(shù)據(jù)上的位置實(shí)體。使用游標(biāo),用戶可以訪問(wèn)結(jié)果集中的任何一行數(shù)據(jù)。
將光標(biāo)放在一行上后,可以對(duì)該行的數(shù)據(jù)進(jìn)行操作,例如提取當(dāng)前行的數(shù)據(jù)。
游標(biāo)實(shí)際上是一種機(jī)制,它可以一次從包含多個(gè)數(shù)據(jù)記錄的結(jié)果集中提取一條記錄。游標(biāo)充當(dāng)指針。
雖然光標(biāo)可以遍歷結(jié)果中的所有行,但它一次只能指向一行。
一般來(lái)說(shuō),SQL的游標(biāo)是一個(gè)臨時(shí)的數(shù)據(jù)庫(kù)對(duì)象,可以作為數(shù)據(jù)庫(kù)表中存儲(chǔ)的數(shù)據(jù)行的副本,也可以作為指向數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)行的指針。
游標(biāo)提供了一種逐行操作表中數(shù)據(jù)的方法。
游標(biāo)的一個(gè)常見(jiàn)用途是保存查詢(xún)結(jié)果供以后使用。游標(biāo)的結(jié)果集由SELECT語(yǔ)句生成。如果處理需要重用記錄集,
創(chuàng)建一次游標(biāo)并多次重用它要比重復(fù)查詢(xún)數(shù)據(jù)庫(kù)快得多。
第四,對(duì)游標(biāo)的優(yōu)化建議
如果能不用游標(biāo),盡量不要使用游標(biāo) 用完用完之后一定要關(guān)閉和釋放 盡量不要在大量數(shù)據(jù)上定義游標(biāo) 盡量不要使用游標(biāo)上更新數(shù)據(jù) 盡量不要使用insensitive, static和keyset這些參數(shù)定義游標(biāo) 如果可以,盡量使用FAST_FORWARD關(guān)鍵字定義游標(biāo) 如果只對(duì)數(shù)據(jù)進(jìn)行讀取,當(dāng)讀取時(shí)只用到FETCH NEXT選項(xiàng),則最好使用FORWARD_ONLY參數(shù)1.《sql游標(biāo) SQL游標(biāo)的小知識(shí)》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《sql游標(biāo) SQL游標(biāo)的小知識(shí)》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/guoji/695847.html