etl oracle的游標(biāo)用法,for循環(huán)游標(biāo)和fetchinto用法上有什么區(qū)別?
oracle的游標(biāo)用法,for循環(huán)游標(biāo)和fetchinto用法上有什么區(qū)別?游標(biāo)for循環(huán)確實(shí)簡化了游標(biāo)的開發(fā)。我們不再需要使用open、fetch和close語句,也不再需要使用%found屬性來檢
oracle的游標(biāo)用法,for循環(huán)游標(biāo)和fetchinto用法上有什么區(qū)別?
游標(biāo)for循環(huán)確實(shí)簡化了游標(biāo)的開發(fā)。我們不再需要使用open、fetch和close語句,也不再需要使用%found屬性來檢測是否找到最后一條記錄。甲骨文含蓄地幫助我們完成了這一切
其他人都完全一樣。
SQL語句中的FETCH如何使用?
功能是將光標(biāo)的當(dāng)前值分配給變量,例如:
-define cursor
cursor CuItem(varBH number,varGSID varchar2)是
從數(shù)據(jù)項(xiàng)A中選擇*,其中A.GSID=varGSID和A.THD01=varBH
vuItem CuItem%行類型
-使用cursor
打開CuItem(pBH,pGSID)
將CuItem提取到vuItem
同時(shí)CuItem%找到循環(huán)
結(jié)束循環(huán)
關(guān)閉CuItem
我覺得for循環(huán)的用法比fetch into用法簡單得多。他們之間有什么區(qū)別嗎?
是否有任何情況下,fetch可以做,但不能做?
從用法來看,for只需要一句話。Fetch必須打開和關(guān)閉游標(biāo),并判斷是否獲取數(shù)據(jù)。
oracle的游標(biāo)用法,for循環(huán)游標(biāo)和fetch into用法上有什么區(qū)別?
通常我們通過獲取一些游標(biāo)數(shù)據(jù)來獲取游標(biāo)數(shù)據(jù)。當(dāng)游標(biāo)中的記錄數(shù)較少時(shí),這無關(guān)緊要。然而,自從oracle8i以來,Oracle提供了fetchbulk集合來批量獲取游標(biāo)中的數(shù)據(jù)。它可以提高讀取光標(biāo)中大量數(shù)據(jù)的效率。就像SNMP協(xié)議一樣,V2版本將get bulk PDU添加到V1版本,它還用于更高效地批量獲取設(shè)備上的節(jié)點(diǎn)值。fetch bulk collect into的格式是:fetch some cursor collect into col1,col2 limit xxx。col1和col2是聲明的集合類型變量。XXX是每次獲取的數(shù)據(jù)塊(記錄數(shù))的大小,相當(dāng)于緩沖區(qū)的大小。不能指定限制XXX的大小。下面是一個(gè)實(shí)例來說明它的用法,并將其與逐個(gè)獲取記錄的獲取執(zhí)行效率進(jìn)行比較。測試環(huán)境為Oracle 10g 10.2.1.0,查詢contact表SR,contacts中有1802983條記錄,返回的記錄數(shù)受游標(biāo)rownum限制。