簡述Oracle游標變數

2021-10-06 21:56:13 字數 1126 閱讀 5213

游標變數和顯示游標的用法基本相同。游標變數的不同之處在於可以在不同程式之間作為引數進行傳遞。

宣告游標變數

游標變數型別分為強型別和弱型別兩種,如下所示:

type cursortypename is ref cursor

return returntype;

--強型別

type cursortypename is ref cursor

;--弱型別

如上所示,很顯然強型別較於弱型別多了返回型別的定義。因此,對於強型別而言,將游標變數指向游標物件時,需要游標物件的查詢列表的資料型別與其定義的返回型別相容,oracle資料庫提供了一種弱型別的游標變數型別sys_refcursor

和宣告其它型別變數一樣,用如下語句宣告型別為cursortypename游標變數cursorname

cursorname cursortypename;
使用游標變數

create

table book

( bookname varchar2(64)

, publisherid varchar2(64)

)

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;

我們開始看到與顯示游標相比,唯一的區別在於開啟游標變數時,需要使用open cursor for select statement將游標變數指向對應的游標物件,至於游標遍歷、關閉的方法與顯示游標沒有任何不同

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...