oracle 游標詳解 簡單例項

2021-09-01 20:09:09 字數 2131 閱讀 2225

游標-----記憶體中的一塊區域,存放的是select 的結果

游標用來處理從資料庫中檢索的多行記錄(使用select語句)。利用游標,程式可以逐個地處理和遍歷一次檢索返回的整個記錄集。

為了處理sql語句,oracle將在記憶體中分配乙個區域,這就是上下文區。這個區包含了已經處理完的行數、指向被分析語句的指標,整個區是查詢語句返回的資料行集。游標就是指向上下文區控制代碼或指標。

兩種游標:

一、顯示游標(需要明確定義!)

顯示游標被用於處理返回多行資料的select 語句,游標名通過cursor….is 語句顯示地賦給select 語句。

在pl/sql中處理顯示游標所必需的四個步驟:

1)宣告游標;cursor cursor_name is select_statement

2)為查詢開啟游標;open cursor_name

3)取得結果放入pl/sql變數中;

fetch cursor_name into list_of_variables;

fetch cursor_name into pl/sql_record;

4)關閉游標。close cursor_name

注意:在宣告游標時,select_statement不能包含into子句。當使用顯示游標時,into子句是fetch語句的一部分。

1、 顯式游標

select語句上 使用顯式游標

能明確訪問結果集

for迴圈游標

引數游標

解決多行記錄的查詢問題

fetch游標

二、隱式游標

所有的隱式游標都被假設為只返回一條記錄。

使用隱式游標時,使用者無需進行宣告、開啟及關閉。pl/sql隱含地開啟、處理,然後關掉游標。

例如:…….

select studentno,studentname

into curstudentno,curstudentname

from studentrecord

where name=』gg』;

上述游標自動開啟,並把相關值賦給對應變數,然後關閉。執行完後,pl/sql變數curstudentno,curstudentname中已經有了值。

2、 隱式游標

單條sql語句所產生的結果集合

用關鍵字sql表示隱式游標

4個屬性 %rowcount 影響的記錄的行數 整數

%found 影響到了記錄 true

%notfound 沒有影響到記錄 true

%isopen 是否開啟 布林值 永遠是false

多條sql語句 隱式游標sql永遠指的是最後一條sql語句的結果

主要使用在update 和 delete語句上

實際操作和例子:

1.建立一張表 mine, 屬於sanydnc 使用者,

列名:sid(number),sname(varchar2(10)),sage(number),插入一些資料;

2.開啟乙個sql視窗,並寫入

declare

--sname_cursor sanydnc.mime.sname%type;--(引用mine表的字段sname的型別)

sname_cursor varchar2(10);

--total_id_cursor sanydnc.mime.sid%type;--(引用mine表的字段sid的型別)

total_id_cursor varchar2(10);

vage sanydnc.mime.sage%type;

cursor my_cursor is

select sname,round(sum(sid)/1,2) as total_id from sanydnc.mime where sanydnc.mime.sage--vrow my_cursor%rowtype;--(引用定義的游標的一行記錄的型別)

begin

vage := 10;

open my_cursor;

fetch my_cursor into sname_cursor,total_id_cursor;

dbms_output.put_line(sname_cursor||total_id_cursor);

close my_cursor;

end;

Oracle儲存過程返回游標例項詳解

有倆種方法 一種是宣告系統游標,一種是宣告自定義游標,然後後面操作一樣,引數型別為 in out 或out 1 宣告個人系統游標.推薦 如下 create or replace p temp procedure cur arg out sys refcursor 方法1 begin open cur...

oracle 游標詳解

游標是對映在結果集中一行資料上的位置實體,有了游標,使用者就可以訪問結果集中的任意一行資料。將游標放置到某行後,即可對該行資料進行操作,例如提取當前行的資料,當前行的某些欄位等。在大多數時候我們在設計程式的時候都遵循下面的步驟 1 開啟游標 2 開始迴圈 3 從游標中取值 4 檢查那一行被返回 5 ...

oracle動態游標例項

1,帶引數的游標 與儲存過程和函式相似,可以將引數傳遞給游標並在查詢中使用。這對於處理在某種條件下開啟游標的情況非常有用。它的語法如下 cursor cursor name parameter parameter is select statement 定義引數的語法如下 parameter nam...