|
4.1 游標概念
4.1.1 處理顯式游標
4.1.2 處理隱式游標
4.1.3 關于 NO_DATA_FOUND 和 %NOTFOUND的區(qū)別
4.1.4 使用游標更新和刪除數(shù)據(jù)
4.2 游標變量
4.2.1 聲明游標變量
4.2.2 游標變量操作
游標的使用
在 PL/SQL 程序中,對于處理多行記錄的事務經(jīng)常使用游標來實現(xiàn)。
4.1 游標概念
在PL/SQL塊中執(zhí)行SELECT、INSERT、DELETE和UPDATE語句時,ORACLE會在內存中為其分配上下文區(qū)(Context Area),即緩沖區(qū)。游標是指向該區(qū)的一個指針,或是命名一個工作區(qū)(Work Area),或是一種結構化數(shù)據(jù)類型。它為應用等量齊觀提供了一種對具有多行數(shù)據(jù)查詢結果集中的每一行數(shù)據(jù)分別進行單獨處理的方法,是設計嵌入式SQL語句的應用程序的常用編程方式。
在每個用戶會話中,可以同時打開多個游標,其數(shù)量由數(shù)據(jù)庫初始化參數(shù)文件中的OPEN_CURSORS參數(shù)定義。
對于不同的SQL語句,游標的使用情況不同:
SQL語句 | 游標 |
非查詢語句 | 隱式的 |
結果是單行的查詢語句 | 隱式的或顯示的 |
結果是多行的查詢語句 | 顯示的 |
4.1.1 處理顯式游標
1. 顯式游標處理
顯式游標處理需四個 PL/SQL步驟:
l 定義/聲明游標:就是定義一個游標名,以及與其相對應的SELECT 語句。
格式:
CURSOR cursor_name[(parameter[, parameter]…)]
[RETURN datatype]
IS
select_statement;4.2 游標變量與游標一樣,游標變量也是一個指向多行查詢結果集合中當前數(shù)據(jù)行的指針。但與游標不同的是,游標變量是動態(tài)的,而游標是靜態(tài)的。游標只能與指定的查詢相連,即固定指向一個查詢的內存處理區(qū)域,而游標變量則可與不同的查詢語句相連,它可以指向不同查詢語句的內存處理區(qū)域(但不能同時指向多個內存處理區(qū)域,在某一時刻只能與一個查詢語句相連),只要這些查詢語句的返回類型兼容即可。
4.2.1 聲明游標變量
游標變量為一個指針,它屬于參照類型,所以在聲明游標變量類型之前必須先定義游標變量類型。在PL/SQL中,可以在塊、子程序和包的聲明區(qū)域內定義游標變量類型。
語法格式為:
TYPE ref_type_name IS REF CURSOR
[ RETURN return_type];
it知識庫:ORACLE PL/SQL編程之把游標說透,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。