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