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