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