與游標類似,游標變數也可以處理多行查詢的結果集。但是,游標與游標變數是不同的,就 像常量和變數的關係一樣。游標包括顯式游標和隱式游標,它們都是靜態定義的。當使用者使用它們時,就需要再宣告時定義查詢。而游標變數是動態的,它不與特定 的查詢繫結在一起,而是執行時才確定所使用的查詢。
游標變數的定義包括兩個步驟:
(1)定義cursor型別的指標
type ref_cursor_name is ref cursor[return teturntype];
(2)定義ref cursor型別的變數
type my_cursor is ref cursor;
這樣定義的游標型別稱為弱ref cursor型別,這是因為沒有指定游標的返回型別,因此它能指向乙個具有任意多列的select查詢結果
強ref cursor型別要求使用者宣告構成所使用查詢結果集的返回型別
type my_cursor is ref cursor return emp%rowtype;
游標變數的使用方法和游標相同都是要 宣告--》開啟--》檢索--》關閉
程式演示:
declare
type my_cursor is ref cursor return emp%rowtype;
my_cursor_use my_cursor;
v_cursor emp%rowtype;
begin
open my_cursor_use for select * from emp;
loop
fetch my_cursor_use into v_cursor;
exit when my_cursor_use%notfound;
dbms_output.put_line(v_cursor.ename);
dbms_output.put_line(v_cursor.job);
end loop;
close my_cursor_use;
end;
注意:使用游標變數真正的好處是在必須使用同一游標變數開啟多個查詢時,或根據執行時的條件,需要動態地把不同的查詢賦予相同的游標體現。使用同一游標變數可以開啟多個查詢
PL SQL語法之游標
本文介紹的是oracle中的游標型別有哪些,以及如何定義和使用各種型別的游標。在oracle中,游標可以分為顯示游標和隱式游標。先說隱式游標,隱式游標沒有語法上的定義,但在使用上卻是使用了游標的特性,所以被稱作隱式游標 顯示游標則又可以分為靜態游標,和動態游標 也稱ref游標 而動態游標又可以進一步...
入門oracle之游標
在寫oracle資料庫函式的時候,往往會返回乙個結果集,我們通過游標來實現這個操作,它的語法是 cursor 游標名 引數名 資料型別 引數名 資料型別 is select 語句 ex cusor a1 is select name from 表名 定義乙個a1的游標返回乙個表的所有name值。使用...
SQL語法之游標
游標是面向行的,它會使開發人員變懶,懶得去想用面向集合的查詢方式實現某些功能。在效能上,游標會遲更多的記憶體,減少可用的併發,占用頻寬,鎖定資源,當然還有更多的 量。用乙個比喻來說明為什麼游標會占用更多的資源。當你從atm機取款的時候,是一次取1000的效率更高呢,還是10次100呢?declare...