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