oracle游標我們經常用到,下面介紹oracle游標和游標變量的區別。
oracle游標是數據庫中一個命名的工作區,當游標被聲明后,他就與一個固定的SQL想關聯,在編譯時刻是已知的,是靜態的,它永遠指向一個相同的查詢工作區。
游標變量可以在運行時刻與不同的SQL語句關聯,在運行時可以取不同的SQL語句。它可以引用不同的工作區。
oracle游標和游標變量是不能相互代替的。
如何定義游標類型:
type ref_type_name is ref cursor [RETURN return_type];
聲明游標變量:
cursor_name ref_type_name;
ref_type_name 是后面聲明游標變量時要用到的我們的游標類型(自定義游標類型,即CURSOR是系統默認的,ref_type_name是我們定義的 );return_type代表數據庫表中的一行或一個記錄類型。
type ref_type_name is ref cursor return employee%type
return 是可選的,如果有是強類型,可以減少錯誤;如果沒有return是弱引用,有較好的靈活性。
不能在包頭里面聲明游標變量,但可以定義游標類型,要注意這二者的區別。可以聲明游標變量作為函數或過程的形式參數。
%type一個列類型 %rowtype行類型
控制oracle游標變量:open...for...(打開游標變量,與多行查詢連接起來) fetch(從結果集中取行數據) close(關閉游標變量)