oracle游標(biāo)和游標(biāo)變量的區(qū)別
oracle游標(biāo)我們經(jīng)常用到,下面就為您詳細(xì)介紹oracle游標(biāo)和游標(biāo)變量的區(qū)別,如果您對(duì)oracle游標(biāo)方面感興趣的話,不妨一看。
oracle游標(biāo)是數(shù)據(jù)庫(kù)中一個(gè)命名的工作區(qū),當(dāng)游標(biāo)被聲明后,他就與一個(gè)固定的SQL想關(guān)聯(lián),在編譯時(shí)刻是已知的,是靜態(tài)的.它永遠(yuǎn)指向一個(gè)相同的查詢工作區(qū).
游標(biāo)變量可以在運(yùn)行時(shí)刻與不同的SQL語(yǔ)句關(guān)聯(lián),在運(yùn)行時(shí)可以取不同的SQL語(yǔ)句.它可以引用不同的工作區(qū).
oracle游標(biāo)和游標(biāo)變量是不能相互代替的.
如何定義游標(biāo)類型
TYPE ref_type_name IS REF CURSOR [RETURN return_type];
聲明游標(biāo)變量
cursor_name ref_type_name;
ref_type_name 是后面聲明游標(biāo)變量時(shí)要用到的我們的游標(biāo)類型(自定義游標(biāo)類型,即CURSOR是系統(tǒng)默認(rèn)的,ref_type_name是我們定義的 );return_type代表數(shù)據(jù)庫(kù)表中的一行,或一個(gè)記錄類型
TYPE ref_type_name IS REF CURSOR RETURN employee%TYPE
RETURN 是可選的,如果有是強(qiáng)類型,可以減少錯(cuò)誤,如果沒(méi)有return是弱引用,有較好的靈活性.
不能在包頭里面聲明游標(biāo)變量,注意,但可以定義游標(biāo)類型,要注意這二者的區(qū)別.
可以聲明游標(biāo)變量作為函數(shù)或過(guò)程的形式參數(shù).
%TYPE一個(gè)列類型
%ROWTYPE行類型
控制oracle游標(biāo)變量
OPEN-FOR(打開游標(biāo)變量,與多行查詢連接起來(lái)) FETCH(從結(jié)果集中取行數(shù)據(jù)),close(關(guān)閉游標(biāo)變量)
BULK COLLECT子句將游標(biāo)變量中的行一次性提取到一個(gè)集合中.
【編輯推薦】
Oracle游標(biāo)表達(dá)式和表函數(shù)