Oracle中的游標

2021-06-16 15:54:26 字數 3250 閱讀 2982

oracle

中的游標

游標(cursor

)在pl/sql

中可以增強

sql語句的功能,游標是用來查詢資料、獲取結果集中記錄的指標。它可以讓開發者在結果集中訪問結果集中的一行。游標以程式設計的方式訪問資料,從而完成在結果集的每個記錄上的操作。也就是說,游標就是結果集中的記錄指標,該指標指向查詢結果集中的某一行。

游標可以分為兩類:靜態游標和

ref游標。靜態游標是在編譯時和對應的查詢語句繫結在一起,靜態游標可以分為隱式游標和顯示游標。

ref游標(應用游標)和對應的查詢語句只有在執行時才能決定,在開發時一般用

ref游標和游標變數實現,為了使用

ref游標必須使用游標變數。

ref游標又可分為兩種引用游標:強返回型別游標和弱返回型別游標。

那麼如何使用游標呢?首先,宣告乙個游標,就是將乙個查詢語句繫結到游標上,宣告時,查詢語句並不執行。宣告游標的語法如下:

cursor

游標名[(

引數)]

[return

返回值型別

] is select語句

游標宣告中,可以有引數,可以有返回值,規定返回值型別,游標宣告中的

select

中不能有

into

子句。

open

命令用於開啟游標,開啟游標時,與繫結的

select

語句開始執行。並且查詢的結果集中,游標指標預設的指向第乙個值(行)。

open

游標名[

(引數)]

若游標有引數,則開啟游標時,就要為游標傳實際引數。

從游標中提取資料,使用

fetch

語句可以從開啟的游標中檢索資料

,每次檢索一行,

fetch

完之後,游標自動定位到下一行。語法是:

fetch

游標名into

變數名

fetch

命令常寫在迴圈裡面,用於從結果集中檢索一行資料,如果是多列,則要定義多個變數,或者乙個記錄型別的變數接受。

使用完游標之後,應該關閉游標,語法是:

close

游標名

游標屬性:

%found

如果fetch

到值,則

%found

返回值是

true

,如果fetch

不到值,則

%found

返回值是

false。

%notfound

和%found

的意思正好相反。

%rowcount

表示每fetch

成功一次,

rowcount

就自動加

1,初始值為

0,表示返回值返回成功的行數。

%isopen

判斷游標是否已經開啟,

true

是開啟,

false

是未開啟。

下面是例子:

declare

cursorname testss.names%type;

cursorcursorssisselectnamesfromtestss;

begin

opencursorss;

loop

fetchcursorssintocursorname;

exit when cursorss%notfound;//退出條件

insertintotestvalues(default,cursorname);

endloop;

closecursorss;

end;

如果帶引數,則如下:

declare

cursorname testss.names%type;

cursorcursorss(canshunumber)isselectnamesfromtestsswhereid=canshu;

begin

opencursorss(1);

loop

fetchcursorssintocursorname;

exitwhencursorss%notfound;

insertintotestvalues(default,cursorname);

endloop;

closecursorss;

end;

關於宣告變數部分和宣告游標部分,放在

declare

中,在begin

中開啟游標並且使用。需要注意的是,游標一定要有退出條件,不然會陷入死迴圈,有可能會摧毀資料或者資料庫。使用游標的好處是可以對查詢出的滿足條件的逐條記錄進行操作。比頻繁的開啟資料庫

,運算元據,關閉資料庫更方便,更高效。雖然所佔的記憶體增加了,但是對於批處理的資料,是很好的解決辦法。

Oracle中的游標

cursor found最近一次讀取是否成功 notfound isopen游標開啟時返回true rowcount返回已從游標讀取的記錄數 輸出年齡大於等於18的使用者的id跟name declare v id t.id type v name t.name type cursor c user ...

Oracle中的游標

游標 用來處理使用select語句從資料庫中檢索到的多行記錄的工具。1 游標的分類 1 顯示游標 返回多條記錄時,使用顯示游標逐行讀取 2 隱式游標 pl sql自動為dml語句建立隱式游標,包含一條返回記錄 2 顯示游標 1 顯示游標的使用步驟 宣告游標 cursor cursor name pa...

oracle 中的游標

oracle 中的游標 通俗易懂的sql 直接上!簡單的游標使用滴呀 使用for obj in objs loop end loop declare cursor c job isselect name,course,greade from stu c row c job rowtype begin...