游標變數和顯示游標的用法基本相同。游標變數的不同之處在於可以在不同程式之間作為引數進行傳遞。
宣告游標變數
游標變數型別分為強型別和弱型別兩種,如下所示:
如上所示,很顯然強型別較於弱型別多了返回型別的定義。因此,對於強型別而言,將游標變數指向游標物件時,需要游標物件的查詢列表的資料型別與其定義的返回型別相容,oracle資料庫提供了一種弱型別的游標變數型別sys_refcursortype cursortypename is ref cursor
return returntype;
--強型別
type cursortypename is ref cursor
;--弱型別
和宣告其它型別變數一樣,用如下語句宣告型別為cursortypename游標變數cursorname
cursorname cursortypename;
使用游標變數
create
table book
( bookname varchar2(64)
, publisherid varchar2(64)
)
我們開始看到與顯示游標相比,唯一的區別在於開啟游標變數時,需要使用open cursor for select statement將游標變數指向對應的游標物件,至於游標遍歷、關閉的方法與顯示游標沒有任何不同declare
test sys_refcursor;
cur_row book%rowtype;
begin
open test for
select
*from book;
loop
fetch test into cur_row;
exit
when test%notfound;
dbms_output.put_line(cur_row.bookname||cur_row.publisherid)
;end
loop
;close test;
end;
ORACLE 游標和游標變數的區別
如何定義游標型別 type ref type name is ref cursor return return type 宣告游標變數 cursor name ref type name 從技術底層看,兩者是相同的。普通plsql cursor在定義時是 靜態 的。而ref cursors可以動態開...
Oracle游標和游標變數的區別
oracle游標我們經常用到,下面介紹oracle游標和游標變數的區別。oracle游標是資料庫中乙個命名的工作區,當游標被宣告後,他就與乙個固定的sql想關聯,在編譯時刻是已知的,是靜態的,它永遠指向乙個相同的查詢工作區。游標變數可以在執行時刻與不同的sql語句關聯,在執行時可以取不同的sql語句...
oracle筆記七(游標變數)
游標變數 游標變數是動態的,而游標是靜態的。游標只能與指定的查詢相連,即固定指向乙個查詢的記憶體處理區域,而游標變數則可與不同的查詢語句相連,它可以指向不同查詢語句的記憶體處理區域 但不能同時指向多個記憶體處理區域,在某一時刻只能與乙個查詢語句相連 只要這些查詢語句的返回型別相容即可 declare...