新聞中心
在Oracle 10g中應(yīng)用FORALL可以一次性向SQL語(yǔ)句提交一組臨時(shí)值,從而提高了PL/SQL循環(huán)中執(zhí)行數(shù)據(jù)操作語(yǔ)言(DML)的效率。

但在10g前,F(xiàn)ORALL語(yǔ)句的語(yǔ)法只能處理連續(xù)性的數(shù)組元素:
- FORALL index_name IN lower_bound ..upper_bound sql_statement;
這意味著:在以前,應(yīng)用FORALL的嵌套表不能刪除待處理數(shù)組中間的元素,而且數(shù)組項(xiàng)必須進(jìn)行連續(xù)處理。Oracle 10g解決了這兩方面的問(wèn)題,并增加了INDICES OF和VALUES OF子句。
INDICES OF子句替代lower_bound ..upper_bound,說(shuō)明所有要處理的有效索引值,即使這些值之間存在間隔。就像是這樣:
- FORALL index_name IN INDICES OF collection_name
- BETWEEN lower_bound AND upper_bound
- sql_statement;
您仍然可以應(yīng)用BETWEEN語(yǔ)法限制要處理的范圍,這是一個(gè)可選的內(nèi)容。
VALUES OF子句幫助您以不同順序處理主要的集合。您再建立另一個(gè)集合,其中只包含您要處理的索引號(hào)碼,這些號(hào)碼以您希望處理的順序排列。然后該語(yǔ)句變?yōu)椋骸?/p>
- FORALL index_name IN VALUES OF index_collection
- sql_statement;
列表A中是一個(gè)應(yīng)用HR樣本模式的例子。我將部門名稱加載到內(nèi)存中的一個(gè)嵌套表內(nèi),然后在里面搜索與IT有關(guān)的部門。每搜索到一個(gè),我保存它的表輸入項(xiàng)索引。VALUES OF子句結(jié)合這組索引對(duì)表中的每個(gè)部門進(jìn)行INSERT語(yǔ)句處理。(這只是一個(gè)示例;用一個(gè)單獨(dú)的SQL語(yǔ)句也可以進(jìn)行同樣的處理。)列表B中是輸出結(jié)果。
以上就Oracle 10g中如何應(yīng)用FORALL處理非連續(xù)數(shù)組做了簡(jiǎn)單概述,要想了解的更多相關(guān)問(wèn)題的解決方案,請(qǐng)留意站上的相關(guān)論壇。
【編輯推薦】
- 修改Oracle存儲(chǔ)過(guò)程所需代碼
- 對(duì)Oracle存儲(chǔ)過(guò)程的總結(jié)
- 實(shí)現(xiàn)Oracle存儲(chǔ)過(guò)程的實(shí)際應(yīng)用的代碼
- 深入高性能的Oracle動(dòng)態(tài)SQL開(kāi)發(fā)
- Oracle SQL的優(yōu)化規(guī)則解析
當(dāng)前名稱:Oracle10g中如何應(yīng)用FORALL理非連續(xù)數(shù)組
文章URL:http://www.5511xx.com/article/cdhgooi.html


咨詢
建站咨詢
