游標-----記憶體中的一塊區域,存放的是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...